// 
// Money, https://github.com/danthorpe/Money
// Created by Dan Thorpe, @danthorpe
// 
// The MIT License (MIT)
// 
// Copyright (c) 2015 Daniel Thorpe
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// 
// Autogenerated from build scripts, do not manually edit this file.

extension Currency {

    /// Currency ADP
    public final class ADP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ADP
        public static var sharedInstance = ADP(code: "ADP")
    }

    /// Currency AED
    public final class AED: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AED
        public static var sharedInstance = AED(code: "AED")
    }

    /// Currency AFA
    public final class AFA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AFA
        public static var sharedInstance = AFA(code: "AFA")
    }

    /// Currency AFN
    public final class AFN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AFN
        public static var sharedInstance = AFN(code: "AFN")
    }

    /// Currency ALK
    public final class ALK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ALK
        public static var sharedInstance = ALK(code: "ALK")
    }

    /// Currency ALL
    public final class ALL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ALL
        public static var sharedInstance = ALL(code: "ALL")
    }

    /// Currency AMD
    public final class AMD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AMD
        public static var sharedInstance = AMD(code: "AMD")
    }

    /// Currency ANG
    public final class ANG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ANG
        public static var sharedInstance = ANG(code: "ANG")
    }

    /// Currency AOA
    public final class AOA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AOA
        public static var sharedInstance = AOA(code: "AOA")
    }

    /// Currency AOK
    public final class AOK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AOK
        public static var sharedInstance = AOK(code: "AOK")
    }

    /// Currency AON
    public final class AON: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AON
        public static var sharedInstance = AON(code: "AON")
    }

    /// Currency AOR
    public final class AOR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AOR
        public static var sharedInstance = AOR(code: "AOR")
    }

    /// Currency ARA
    public final class ARA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ARA
        public static var sharedInstance = ARA(code: "ARA")
    }

    /// Currency ARL
    public final class ARL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ARL
        public static var sharedInstance = ARL(code: "ARL")
    }

    /// Currency ARM
    public final class ARM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ARM
        public static var sharedInstance = ARM(code: "ARM")
    }

    /// Currency ARP
    public final class ARP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ARP
        public static var sharedInstance = ARP(code: "ARP")
    }

    /// Currency ARS
    public final class ARS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ARS
        public static var sharedInstance = ARS(code: "ARS")
    }

    /// Currency ATS
    public final class ATS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ATS
        public static var sharedInstance = ATS(code: "ATS")
    }

    /// Currency AUD
    public final class AUD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AUD
        public static var sharedInstance = AUD(code: "AUD")
    }

    /// Currency AWG
    public final class AWG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AWG
        public static var sharedInstance = AWG(code: "AWG")
    }

    /// Currency AZM
    public final class AZM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AZM
        public static var sharedInstance = AZM(code: "AZM")
    }

    /// Currency AZN
    public final class AZN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.AZN
        public static var sharedInstance = AZN(code: "AZN")
    }

    /// Currency BAD
    public final class BAD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BAD
        public static var sharedInstance = BAD(code: "BAD")
    }

    /// Currency BAM
    public final class BAM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BAM
        public static var sharedInstance = BAM(code: "BAM")
    }

    /// Currency BAN
    public final class BAN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BAN
        public static var sharedInstance = BAN(code: "BAN")
    }

    /// Currency BBD
    public final class BBD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BBD
        public static var sharedInstance = BBD(code: "BBD")
    }

    /// Currency BDT
    public final class BDT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BDT
        public static var sharedInstance = BDT(code: "BDT")
    }

    /// Currency BEC
    public final class BEC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BEC
        public static var sharedInstance = BEC(code: "BEC")
    }

    /// Currency BEF
    public final class BEF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BEF
        public static var sharedInstance = BEF(code: "BEF")
    }

    /// Currency BEL
    public final class BEL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BEL
        public static var sharedInstance = BEL(code: "BEL")
    }

    /// Currency BGL
    public final class BGL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BGL
        public static var sharedInstance = BGL(code: "BGL")
    }

    /// Currency BGM
    public final class BGM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BGM
        public static var sharedInstance = BGM(code: "BGM")
    }

    /// Currency BGN
    public final class BGN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BGN
        public static var sharedInstance = BGN(code: "BGN")
    }

    /// Currency BGO
    public final class BGO: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BGO
        public static var sharedInstance = BGO(code: "BGO")
    }

    /// Currency BHD
    public final class BHD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BHD
        public static var sharedInstance = BHD(code: "BHD")
    }

    /// Currency BIF
    public final class BIF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BIF
        public static var sharedInstance = BIF(code: "BIF")
    }

    /// Currency BMD
    public final class BMD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BMD
        public static var sharedInstance = BMD(code: "BMD")
    }

    /// Currency BND
    public final class BND: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BND
        public static var sharedInstance = BND(code: "BND")
    }

    /// Currency BOB
    public final class BOB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BOB
        public static var sharedInstance = BOB(code: "BOB")
    }

    /// Currency BOL
    public final class BOL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BOL
        public static var sharedInstance = BOL(code: "BOL")
    }

    /// Currency BOP
    public final class BOP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BOP
        public static var sharedInstance = BOP(code: "BOP")
    }

    /// Currency BOV
    public final class BOV: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BOV
        public static var sharedInstance = BOV(code: "BOV")
    }

    /// Currency BRB
    public final class BRB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRB
        public static var sharedInstance = BRB(code: "BRB")
    }

    /// Currency BRC
    public final class BRC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRC
        public static var sharedInstance = BRC(code: "BRC")
    }

    /// Currency BRE
    public final class BRE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRE
        public static var sharedInstance = BRE(code: "BRE")
    }

    /// Currency BRL
    public final class BRL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRL
        public static var sharedInstance = BRL(code: "BRL")
    }

    /// Currency BRN
    public final class BRN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRN
        public static var sharedInstance = BRN(code: "BRN")
    }

    /// Currency BRR
    public final class BRR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRR
        public static var sharedInstance = BRR(code: "BRR")
    }

    /// Currency BRZ
    public final class BRZ: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BRZ
        public static var sharedInstance = BRZ(code: "BRZ")
    }

    /// Currency BSD
    public final class BSD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BSD
        public static var sharedInstance = BSD(code: "BSD")
    }

    /// Currency BTN
    public final class BTN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BTN
        public static var sharedInstance = BTN(code: "BTN")
    }

    /// Currency BUK
    public final class BUK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BUK
        public static var sharedInstance = BUK(code: "BUK")
    }

    /// Currency BWP
    public final class BWP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BWP
        public static var sharedInstance = BWP(code: "BWP")
    }

    /// Currency BYB
    public final class BYB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BYB
        public static var sharedInstance = BYB(code: "BYB")
    }

    /// Currency BYR
    public final class BYR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BYR
        public static var sharedInstance = BYR(code: "BYR")
    }

    /// Currency BZD
    public final class BZD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.BZD
        public static var sharedInstance = BZD(code: "BZD")
    }

    /// Currency CAD
    public final class CAD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CAD
        public static var sharedInstance = CAD(code: "CAD")
    }

    /// Currency CDF
    public final class CDF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CDF
        public static var sharedInstance = CDF(code: "CDF")
    }

    /// Currency CHE
    public final class CHE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CHE
        public static var sharedInstance = CHE(code: "CHE")
    }

    /// Currency CHF
    public final class CHF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CHF
        public static var sharedInstance = CHF(code: "CHF")
    }

    /// Currency CHW
    public final class CHW: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CHW
        public static var sharedInstance = CHW(code: "CHW")
    }

    /// Currency CLE
    public final class CLE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CLE
        public static var sharedInstance = CLE(code: "CLE")
    }

    /// Currency CLF
    public final class CLF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CLF
        public static var sharedInstance = CLF(code: "CLF")
    }

    /// Currency CLP
    public final class CLP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CLP
        public static var sharedInstance = CLP(code: "CLP")
    }

    /// Currency CNX
    public final class CNX: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CNX
        public static var sharedInstance = CNX(code: "CNX")
    }

    /// Currency CNY
    public final class CNY: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CNY
        public static var sharedInstance = CNY(code: "CNY")
    }

    /// Currency COP
    public final class COP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.COP
        public static var sharedInstance = COP(code: "COP")
    }

    /// Currency COU
    public final class COU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.COU
        public static var sharedInstance = COU(code: "COU")
    }

    /// Currency CRC
    public final class CRC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CRC
        public static var sharedInstance = CRC(code: "CRC")
    }

    /// Currency CSD
    public final class CSD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CSD
        public static var sharedInstance = CSD(code: "CSD")
    }

    /// Currency CSK
    public final class CSK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CSK
        public static var sharedInstance = CSK(code: "CSK")
    }

    /// Currency CUC
    public final class CUC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CUC
        public static var sharedInstance = CUC(code: "CUC")
    }

    /// Currency CUP
    public final class CUP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CUP
        public static var sharedInstance = CUP(code: "CUP")
    }

    /// Currency CVE
    public final class CVE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CVE
        public static var sharedInstance = CVE(code: "CVE")
    }

    /// Currency CYP
    public final class CYP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CYP
        public static var sharedInstance = CYP(code: "CYP")
    }

    /// Currency CZK
    public final class CZK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.CZK
        public static var sharedInstance = CZK(code: "CZK")
    }

    /// Currency DDM
    public final class DDM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DDM
        public static var sharedInstance = DDM(code: "DDM")
    }

    /// Currency DEM
    public final class DEM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DEM
        public static var sharedInstance = DEM(code: "DEM")
    }

    /// Currency DJF
    public final class DJF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DJF
        public static var sharedInstance = DJF(code: "DJF")
    }

    /// Currency DKK
    public final class DKK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DKK
        public static var sharedInstance = DKK(code: "DKK")
    }

    /// Currency DOP
    public final class DOP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DOP
        public static var sharedInstance = DOP(code: "DOP")
    }

    /// Currency DZD
    public final class DZD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.DZD
        public static var sharedInstance = DZD(code: "DZD")
    }

    /// Currency ECS
    public final class ECS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ECS
        public static var sharedInstance = ECS(code: "ECS")
    }

    /// Currency ECV
    public final class ECV: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ECV
        public static var sharedInstance = ECV(code: "ECV")
    }

    /// Currency EEK
    public final class EEK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.EEK
        public static var sharedInstance = EEK(code: "EEK")
    }

    /// Currency EGP
    public final class EGP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.EGP
        public static var sharedInstance = EGP(code: "EGP")
    }

    /// Currency EQE
    public final class EQE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.EQE
        public static var sharedInstance = EQE(code: "EQE")
    }

    /// Currency ERN
    public final class ERN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ERN
        public static var sharedInstance = ERN(code: "ERN")
    }

    /// Currency ESA
    public final class ESA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ESA
        public static var sharedInstance = ESA(code: "ESA")
    }

    /// Currency ESB
    public final class ESB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ESB
        public static var sharedInstance = ESB(code: "ESB")
    }

    /// Currency ESP
    public final class ESP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ESP
        public static var sharedInstance = ESP(code: "ESP")
    }

    /// Currency ETB
    public final class ETB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ETB
        public static var sharedInstance = ETB(code: "ETB")
    }

    /// Currency EUR
    public final class EUR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.EUR
        public static var sharedInstance = EUR(code: "EUR")
    }

    /// Currency FIM
    public final class FIM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.FIM
        public static var sharedInstance = FIM(code: "FIM")
    }

    /// Currency FJD
    public final class FJD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.FJD
        public static var sharedInstance = FJD(code: "FJD")
    }

    /// Currency FKP
    public final class FKP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.FKP
        public static var sharedInstance = FKP(code: "FKP")
    }

    /// Currency FRF
    public final class FRF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.FRF
        public static var sharedInstance = FRF(code: "FRF")
    }

    /// Currency GBP
    public final class GBP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GBP
        public static var sharedInstance = GBP(code: "GBP")
    }

    /// Currency GEK
    public final class GEK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GEK
        public static var sharedInstance = GEK(code: "GEK")
    }

    /// Currency GEL
    public final class GEL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GEL
        public static var sharedInstance = GEL(code: "GEL")
    }

    /// Currency GHC
    public final class GHC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GHC
        public static var sharedInstance = GHC(code: "GHC")
    }

    /// Currency GHS
    public final class GHS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GHS
        public static var sharedInstance = GHS(code: "GHS")
    }

    /// Currency GIP
    public final class GIP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GIP
        public static var sharedInstance = GIP(code: "GIP")
    }

    /// Currency GMD
    public final class GMD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GMD
        public static var sharedInstance = GMD(code: "GMD")
    }

    /// Currency GNF
    public final class GNF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GNF
        public static var sharedInstance = GNF(code: "GNF")
    }

    /// Currency GNS
    public final class GNS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GNS
        public static var sharedInstance = GNS(code: "GNS")
    }

    /// Currency GQE
    public final class GQE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GQE
        public static var sharedInstance = GQE(code: "GQE")
    }

    /// Currency GRD
    public final class GRD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GRD
        public static var sharedInstance = GRD(code: "GRD")
    }

    /// Currency GTQ
    public final class GTQ: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GTQ
        public static var sharedInstance = GTQ(code: "GTQ")
    }

    /// Currency GWE
    public final class GWE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GWE
        public static var sharedInstance = GWE(code: "GWE")
    }

    /// Currency GWP
    public final class GWP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GWP
        public static var sharedInstance = GWP(code: "GWP")
    }

    /// Currency GYD
    public final class GYD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.GYD
        public static var sharedInstance = GYD(code: "GYD")
    }

    /// Currency HKD
    public final class HKD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HKD
        public static var sharedInstance = HKD(code: "HKD")
    }

    /// Currency HNL
    public final class HNL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HNL
        public static var sharedInstance = HNL(code: "HNL")
    }

    /// Currency HRD
    public final class HRD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HRD
        public static var sharedInstance = HRD(code: "HRD")
    }

    /// Currency HRK
    public final class HRK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HRK
        public static var sharedInstance = HRK(code: "HRK")
    }

    /// Currency HTG
    public final class HTG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HTG
        public static var sharedInstance = HTG(code: "HTG")
    }

    /// Currency HUF
    public final class HUF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.HUF
        public static var sharedInstance = HUF(code: "HUF")
    }

    /// Currency IDR
    public final class IDR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.IDR
        public static var sharedInstance = IDR(code: "IDR")
    }

    /// Currency IEP
    public final class IEP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.IEP
        public static var sharedInstance = IEP(code: "IEP")
    }

    /// Currency ILP
    public final class ILP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ILP
        public static var sharedInstance = ILP(code: "ILP")
    }

    /// Currency ILR
    public final class ILR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ILR
        public static var sharedInstance = ILR(code: "ILR")
    }

    /// Currency ILS
    public final class ILS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ILS
        public static var sharedInstance = ILS(code: "ILS")
    }

    /// Currency INR
    public final class INR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.INR
        public static var sharedInstance = INR(code: "INR")
    }

    /// Currency IQD
    public final class IQD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.IQD
        public static var sharedInstance = IQD(code: "IQD")
    }

    /// Currency IRR
    public final class IRR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.IRR
        public static var sharedInstance = IRR(code: "IRR")
    }

    /// Currency ISJ
    public final class ISJ: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ISJ
        public static var sharedInstance = ISJ(code: "ISJ")
    }

    /// Currency ISK
    public final class ISK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ISK
        public static var sharedInstance = ISK(code: "ISK")
    }

    /// Currency ITL
    public final class ITL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ITL
        public static var sharedInstance = ITL(code: "ITL")
    }

    /// Currency JMD
    public final class JMD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.JMD
        public static var sharedInstance = JMD(code: "JMD")
    }

    /// Currency JOD
    public final class JOD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.JOD
        public static var sharedInstance = JOD(code: "JOD")
    }

    /// Currency JPY
    public final class JPY: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.JPY
        public static var sharedInstance = JPY(code: "JPY")
    }

    /// Currency KES
    public final class KES: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KES
        public static var sharedInstance = KES(code: "KES")
    }

    /// Currency KGS
    public final class KGS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KGS
        public static var sharedInstance = KGS(code: "KGS")
    }

    /// Currency KHR
    public final class KHR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KHR
        public static var sharedInstance = KHR(code: "KHR")
    }

    /// Currency KMF
    public final class KMF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KMF
        public static var sharedInstance = KMF(code: "KMF")
    }

    /// Currency KPW
    public final class KPW: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KPW
        public static var sharedInstance = KPW(code: "KPW")
    }

    /// Currency KRH
    public final class KRH: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KRH
        public static var sharedInstance = KRH(code: "KRH")
    }

    /// Currency KRO
    public final class KRO: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KRO
        public static var sharedInstance = KRO(code: "KRO")
    }

    /// Currency KRW
    public final class KRW: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KRW
        public static var sharedInstance = KRW(code: "KRW")
    }

    /// Currency KWD
    public final class KWD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KWD
        public static var sharedInstance = KWD(code: "KWD")
    }

    /// Currency KYD
    public final class KYD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KYD
        public static var sharedInstance = KYD(code: "KYD")
    }

    /// Currency KZT
    public final class KZT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.KZT
        public static var sharedInstance = KZT(code: "KZT")
    }

    /// Currency LAK
    public final class LAK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LAK
        public static var sharedInstance = LAK(code: "LAK")
    }

    /// Currency LBP
    public final class LBP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LBP
        public static var sharedInstance = LBP(code: "LBP")
    }

    /// Currency LKR
    public final class LKR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LKR
        public static var sharedInstance = LKR(code: "LKR")
    }

    /// Currency LRD
    public final class LRD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LRD
        public static var sharedInstance = LRD(code: "LRD")
    }

    /// Currency LSL
    public final class LSL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LSL
        public static var sharedInstance = LSL(code: "LSL")
    }

    /// Currency LSM
    public final class LSM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LSM
        public static var sharedInstance = LSM(code: "LSM")
    }

    /// Currency LTL
    public final class LTL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LTL
        public static var sharedInstance = LTL(code: "LTL")
    }

    /// Currency LTT
    public final class LTT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LTT
        public static var sharedInstance = LTT(code: "LTT")
    }

    /// Currency LUC
    public final class LUC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LUC
        public static var sharedInstance = LUC(code: "LUC")
    }

    /// Currency LUF
    public final class LUF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LUF
        public static var sharedInstance = LUF(code: "LUF")
    }

    /// Currency LUL
    public final class LUL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LUL
        public static var sharedInstance = LUL(code: "LUL")
    }

    /// Currency LVL
    public final class LVL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LVL
        public static var sharedInstance = LVL(code: "LVL")
    }

    /// Currency LVR
    public final class LVR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LVR
        public static var sharedInstance = LVR(code: "LVR")
    }

    /// Currency LYD
    public final class LYD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.LYD
        public static var sharedInstance = LYD(code: "LYD")
    }

    /// Currency MAD
    public final class MAD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MAD
        public static var sharedInstance = MAD(code: "MAD")
    }

    /// Currency MAF
    public final class MAF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MAF
        public static var sharedInstance = MAF(code: "MAF")
    }

    /// Currency MCF
    public final class MCF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MCF
        public static var sharedInstance = MCF(code: "MCF")
    }

    /// Currency MDC
    public final class MDC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MDC
        public static var sharedInstance = MDC(code: "MDC")
    }

    /// Currency MDL
    public final class MDL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MDL
        public static var sharedInstance = MDL(code: "MDL")
    }

    /// Currency MGA
    public final class MGA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MGA
        public static var sharedInstance = MGA(code: "MGA")
    }

    /// Currency MGF
    public final class MGF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MGF
        public static var sharedInstance = MGF(code: "MGF")
    }

    /// Currency MKD
    public final class MKD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MKD
        public static var sharedInstance = MKD(code: "MKD")
    }

    /// Currency MKN
    public final class MKN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MKN
        public static var sharedInstance = MKN(code: "MKN")
    }

    /// Currency MLF
    public final class MLF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MLF
        public static var sharedInstance = MLF(code: "MLF")
    }

    /// Currency MMK
    public final class MMK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MMK
        public static var sharedInstance = MMK(code: "MMK")
    }

    /// Currency MNT
    public final class MNT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MNT
        public static var sharedInstance = MNT(code: "MNT")
    }

    /// Currency MOP
    public final class MOP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MOP
        public static var sharedInstance = MOP(code: "MOP")
    }

    /// Currency MRO
    public final class MRO: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MRO
        public static var sharedInstance = MRO(code: "MRO")
    }

    /// Currency MTL
    public final class MTL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MTL
        public static var sharedInstance = MTL(code: "MTL")
    }

    /// Currency MTP
    public final class MTP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MTP
        public static var sharedInstance = MTP(code: "MTP")
    }

    /// Currency MUR
    public final class MUR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MUR
        public static var sharedInstance = MUR(code: "MUR")
    }

    /// Currency MVP
    public final class MVP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MVP
        public static var sharedInstance = MVP(code: "MVP")
    }

    /// Currency MVR
    public final class MVR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MVR
        public static var sharedInstance = MVR(code: "MVR")
    }

    /// Currency MWK
    public final class MWK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MWK
        public static var sharedInstance = MWK(code: "MWK")
    }

    /// Currency MXN
    public final class MXN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MXN
        public static var sharedInstance = MXN(code: "MXN")
    }

    /// Currency MXP
    public final class MXP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MXP
        public static var sharedInstance = MXP(code: "MXP")
    }

    /// Currency MXV
    public final class MXV: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MXV
        public static var sharedInstance = MXV(code: "MXV")
    }

    /// Currency MYR
    public final class MYR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MYR
        public static var sharedInstance = MYR(code: "MYR")
    }

    /// Currency MZE
    public final class MZE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MZE
        public static var sharedInstance = MZE(code: "MZE")
    }

    /// Currency MZM
    public final class MZM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MZM
        public static var sharedInstance = MZM(code: "MZM")
    }

    /// Currency MZN
    public final class MZN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.MZN
        public static var sharedInstance = MZN(code: "MZN")
    }

    /// Currency NAD
    public final class NAD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NAD
        public static var sharedInstance = NAD(code: "NAD")
    }

    /// Currency NGN
    public final class NGN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NGN
        public static var sharedInstance = NGN(code: "NGN")
    }

    /// Currency NIC
    public final class NIC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NIC
        public static var sharedInstance = NIC(code: "NIC")
    }

    /// Currency NIO
    public final class NIO: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NIO
        public static var sharedInstance = NIO(code: "NIO")
    }

    /// Currency NLG
    public final class NLG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NLG
        public static var sharedInstance = NLG(code: "NLG")
    }

    /// Currency NOK
    public final class NOK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NOK
        public static var sharedInstance = NOK(code: "NOK")
    }

    /// Currency NPR
    public final class NPR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NPR
        public static var sharedInstance = NPR(code: "NPR")
    }

    /// Currency NZD
    public final class NZD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.NZD
        public static var sharedInstance = NZD(code: "NZD")
    }

    /// Currency OMR
    public final class OMR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.OMR
        public static var sharedInstance = OMR(code: "OMR")
    }

    /// Currency PAB
    public final class PAB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PAB
        public static var sharedInstance = PAB(code: "PAB")
    }

    /// Currency PEI
    public final class PEI: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PEI
        public static var sharedInstance = PEI(code: "PEI")
    }

    /// Currency PEN
    public final class PEN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PEN
        public static var sharedInstance = PEN(code: "PEN")
    }

    /// Currency PES
    public final class PES: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PES
        public static var sharedInstance = PES(code: "PES")
    }

    /// Currency PGK
    public final class PGK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PGK
        public static var sharedInstance = PGK(code: "PGK")
    }

    /// Currency PHP
    public final class PHP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PHP
        public static var sharedInstance = PHP(code: "PHP")
    }

    /// Currency PKR
    public final class PKR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PKR
        public static var sharedInstance = PKR(code: "PKR")
    }

    /// Currency PLN
    public final class PLN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PLN
        public static var sharedInstance = PLN(code: "PLN")
    }

    /// Currency PLZ
    public final class PLZ: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PLZ
        public static var sharedInstance = PLZ(code: "PLZ")
    }

    /// Currency PTE
    public final class PTE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PTE
        public static var sharedInstance = PTE(code: "PTE")
    }

    /// Currency PYG
    public final class PYG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.PYG
        public static var sharedInstance = PYG(code: "PYG")
    }

    /// Currency QAR
    public final class QAR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.QAR
        public static var sharedInstance = QAR(code: "QAR")
    }

    /// Currency RHD
    public final class RHD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RHD
        public static var sharedInstance = RHD(code: "RHD")
    }

    /// Currency ROL
    public final class ROL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ROL
        public static var sharedInstance = ROL(code: "ROL")
    }

    /// Currency RON
    public final class RON: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RON
        public static var sharedInstance = RON(code: "RON")
    }

    /// Currency RSD
    public final class RSD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RSD
        public static var sharedInstance = RSD(code: "RSD")
    }

    /// Currency RUB
    public final class RUB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RUB
        public static var sharedInstance = RUB(code: "RUB")
    }

    /// Currency RUR
    public final class RUR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RUR
        public static var sharedInstance = RUR(code: "RUR")
    }

    /// Currency RWF
    public final class RWF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.RWF
        public static var sharedInstance = RWF(code: "RWF")
    }

    /// Currency SAR
    public final class SAR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SAR
        public static var sharedInstance = SAR(code: "SAR")
    }

    /// Currency SBD
    public final class SBD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SBD
        public static var sharedInstance = SBD(code: "SBD")
    }

    /// Currency SCR
    public final class SCR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SCR
        public static var sharedInstance = SCR(code: "SCR")
    }

    /// Currency SDD
    public final class SDD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SDD
        public static var sharedInstance = SDD(code: "SDD")
    }

    /// Currency SDG
    public final class SDG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SDG
        public static var sharedInstance = SDG(code: "SDG")
    }

    /// Currency SDP
    public final class SDP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SDP
        public static var sharedInstance = SDP(code: "SDP")
    }

    /// Currency SEK
    public final class SEK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SEK
        public static var sharedInstance = SEK(code: "SEK")
    }

    /// Currency SGD
    public final class SGD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SGD
        public static var sharedInstance = SGD(code: "SGD")
    }

    /// Currency SHP
    public final class SHP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SHP
        public static var sharedInstance = SHP(code: "SHP")
    }

    /// Currency SIT
    public final class SIT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SIT
        public static var sharedInstance = SIT(code: "SIT")
    }

    /// Currency SKK
    public final class SKK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SKK
        public static var sharedInstance = SKK(code: "SKK")
    }

    /// Currency SLL
    public final class SLL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SLL
        public static var sharedInstance = SLL(code: "SLL")
    }

    /// Currency SOS
    public final class SOS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SOS
        public static var sharedInstance = SOS(code: "SOS")
    }

    /// Currency SRD
    public final class SRD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SRD
        public static var sharedInstance = SRD(code: "SRD")
    }

    /// Currency SRG
    public final class SRG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SRG
        public static var sharedInstance = SRG(code: "SRG")
    }

    /// Currency SSP
    public final class SSP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SSP
        public static var sharedInstance = SSP(code: "SSP")
    }

    /// Currency STD
    public final class STD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.STD
        public static var sharedInstance = STD(code: "STD")
    }

    /// Currency SUR
    public final class SUR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SUR
        public static var sharedInstance = SUR(code: "SUR")
    }

    /// Currency SVC
    public final class SVC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SVC
        public static var sharedInstance = SVC(code: "SVC")
    }

    /// Currency SYP
    public final class SYP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SYP
        public static var sharedInstance = SYP(code: "SYP")
    }

    /// Currency SZL
    public final class SZL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.SZL
        public static var sharedInstance = SZL(code: "SZL")
    }

    /// Currency THB
    public final class THB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.THB
        public static var sharedInstance = THB(code: "THB")
    }

    /// Currency TJR
    public final class TJR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TJR
        public static var sharedInstance = TJR(code: "TJR")
    }

    /// Currency TJS
    public final class TJS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TJS
        public static var sharedInstance = TJS(code: "TJS")
    }

    /// Currency TMM
    public final class TMM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TMM
        public static var sharedInstance = TMM(code: "TMM")
    }

    /// Currency TMT
    public final class TMT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TMT
        public static var sharedInstance = TMT(code: "TMT")
    }

    /// Currency TND
    public final class TND: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TND
        public static var sharedInstance = TND(code: "TND")
    }

    /// Currency TOP
    public final class TOP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TOP
        public static var sharedInstance = TOP(code: "TOP")
    }

    /// Currency TPE
    public final class TPE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TPE
        public static var sharedInstance = TPE(code: "TPE")
    }

    /// Currency TRL
    public final class TRL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TRL
        public static var sharedInstance = TRL(code: "TRL")
    }

    /// Currency TRY
    public final class TRY: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TRY
        public static var sharedInstance = TRY(code: "TRY")
    }

    /// Currency TTD
    public final class TTD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TTD
        public static var sharedInstance = TTD(code: "TTD")
    }

    /// Currency TWD
    public final class TWD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TWD
        public static var sharedInstance = TWD(code: "TWD")
    }

    /// Currency TZS
    public final class TZS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.TZS
        public static var sharedInstance = TZS(code: "TZS")
    }

    /// Currency UAH
    public final class UAH: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UAH
        public static var sharedInstance = UAH(code: "UAH")
    }

    /// Currency UAK
    public final class UAK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UAK
        public static var sharedInstance = UAK(code: "UAK")
    }

    /// Currency UGS
    public final class UGS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UGS
        public static var sharedInstance = UGS(code: "UGS")
    }

    /// Currency UGX
    public final class UGX: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UGX
        public static var sharedInstance = UGX(code: "UGX")
    }

    /// Currency USD
    public final class USD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.USD
        public static var sharedInstance = USD(code: "USD")
    }

    /// Currency USN
    public final class USN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.USN
        public static var sharedInstance = USN(code: "USN")
    }

    /// Currency USS
    public final class USS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.USS
        public static var sharedInstance = USS(code: "USS")
    }

    /// Currency UYI
    public final class UYI: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UYI
        public static var sharedInstance = UYI(code: "UYI")
    }

    /// Currency UYP
    public final class UYP: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UYP
        public static var sharedInstance = UYP(code: "UYP")
    }

    /// Currency UYU
    public final class UYU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UYU
        public static var sharedInstance = UYU(code: "UYU")
    }

    /// Currency UZS
    public final class UZS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.UZS
        public static var sharedInstance = UZS(code: "UZS")
    }

    /// Currency VEB
    public final class VEB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.VEB
        public static var sharedInstance = VEB(code: "VEB")
    }

    /// Currency VEF
    public final class VEF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.VEF
        public static var sharedInstance = VEF(code: "VEF")
    }

    /// Currency VND
    public final class VND: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.VND
        public static var sharedInstance = VND(code: "VND")
    }

    /// Currency VNN
    public final class VNN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.VNN
        public static var sharedInstance = VNN(code: "VNN")
    }

    /// Currency VUV
    public final class VUV: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.VUV
        public static var sharedInstance = VUV(code: "VUV")
    }

    /// Currency WST
    public final class WST: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.WST
        public static var sharedInstance = WST(code: "WST")
    }

    /// Currency XAF
    public final class XAF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XAF
        public static var sharedInstance = XAF(code: "XAF")
    }

    /// Currency XAG
    public final class XAG: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XAG
        public static var sharedInstance = XAG(code: "XAG")
    }

    /// Currency XAU
    public final class XAU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XAU
        public static var sharedInstance = XAU(code: "XAU")
    }

    /// Currency XBA
    public final class XBA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XBA
        public static var sharedInstance = XBA(code: "XBA")
    }

    /// Currency XBB
    public final class XBB: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XBB
        public static var sharedInstance = XBB(code: "XBB")
    }

    /// Currency XBC
    public final class XBC: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XBC
        public static var sharedInstance = XBC(code: "XBC")
    }

    /// Currency XBD
    public final class XBD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XBD
        public static var sharedInstance = XBD(code: "XBD")
    }

    /// Currency XCD
    public final class XCD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XCD
        public static var sharedInstance = XCD(code: "XCD")
    }

    /// Currency XDR
    public final class XDR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XDR
        public static var sharedInstance = XDR(code: "XDR")
    }

    /// Currency XEU
    public final class XEU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XEU
        public static var sharedInstance = XEU(code: "XEU")
    }

    /// Currency XFO
    public final class XFO: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XFO
        public static var sharedInstance = XFO(code: "XFO")
    }

    /// Currency XFU
    public final class XFU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XFU
        public static var sharedInstance = XFU(code: "XFU")
    }

    /// Currency XOF
    public final class XOF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XOF
        public static var sharedInstance = XOF(code: "XOF")
    }

    /// Currency XPD
    public final class XPD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XPD
        public static var sharedInstance = XPD(code: "XPD")
    }

    /// Currency XPF
    public final class XPF: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XPF
        public static var sharedInstance = XPF(code: "XPF")
    }

    /// Currency XPT
    public final class XPT: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XPT
        public static var sharedInstance = XPT(code: "XPT")
    }

    /// Currency XRE
    public final class XRE: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XRE
        public static var sharedInstance = XRE(code: "XRE")
    }

    /// Currency XSU
    public final class XSU: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XSU
        public static var sharedInstance = XSU(code: "XSU")
    }

    /// Currency XTS
    public final class XTS: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XTS
        public static var sharedInstance = XTS(code: "XTS")
    }

    /// Currency XUA
    public final class XUA: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XUA
        public static var sharedInstance = XUA(code: "XUA")
    }

    /// Currency XXX
    public final class XXX: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.XXX
        public static var sharedInstance = XXX(code: "XXX")
    }

    /// Currency YDD
    public final class YDD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YDD
        public static var sharedInstance = YDD(code: "YDD")
    }

    /// Currency YER
    public final class YER: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YER
        public static var sharedInstance = YER(code: "YER")
    }

    /// Currency YUD
    public final class YUD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YUD
        public static var sharedInstance = YUD(code: "YUD")
    }

    /// Currency YUM
    public final class YUM: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YUM
        public static var sharedInstance = YUM(code: "YUM")
    }

    /// Currency YUN
    public final class YUN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YUN
        public static var sharedInstance = YUN(code: "YUN")
    }

    /// Currency YUR
    public final class YUR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.YUR
        public static var sharedInstance = YUR(code: "YUR")
    }

    /// Currency ZAL
    public final class ZAL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZAL
        public static var sharedInstance = ZAL(code: "ZAL")
    }

    /// Currency ZAR
    public final class ZAR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZAR
        public static var sharedInstance = ZAR(code: "ZAR")
    }

    /// Currency ZMK
    public final class ZMK: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZMK
        public static var sharedInstance = ZMK(code: "ZMK")
    }

    /// Currency ZMW
    public final class ZMW: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZMW
        public static var sharedInstance = ZMW(code: "ZMW")
    }

    /// Currency ZRN
    public final class ZRN: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZRN
        public static var sharedInstance = ZRN(code: "ZRN")
    }

    /// Currency ZRZ
    public final class ZRZ: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZRZ
        public static var sharedInstance = ZRZ(code: "ZRZ")
    }

    /// Currency ZWL
    public final class ZWL: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZWL
        public static var sharedInstance = ZWL(code: "ZWL")
    }

    /// Currency ZWR
    public final class ZWR: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZWR
        public static var sharedInstance = ZWR(code: "ZWR")
    }

    /// Currency ZWD
    public final class ZWD: Currency.Base, ISOCurrencyType {
        /// - returns: lazy shared instance for Currency.ZWD
        public static var sharedInstance = ZWD(code: "ZWD")
    }
}


/// ADP Money
public typealias ADP = _Money<Currency.ADP>
/// AED Money
public typealias AED = _Money<Currency.AED>
/// AFA Money
public typealias AFA = _Money<Currency.AFA>
/// AFN Money
public typealias AFN = _Money<Currency.AFN>
/// ALK Money
public typealias ALK = _Money<Currency.ALK>
/// ALL Money
public typealias ALL = _Money<Currency.ALL>
/// AMD Money
public typealias AMD = _Money<Currency.AMD>
/// ANG Money
public typealias ANG = _Money<Currency.ANG>
/// AOA Money
public typealias AOA = _Money<Currency.AOA>
/// AOK Money
public typealias AOK = _Money<Currency.AOK>
/// AON Money
public typealias AON = _Money<Currency.AON>
/// AOR Money
public typealias AOR = _Money<Currency.AOR>
/// ARA Money
public typealias ARA = _Money<Currency.ARA>
/// ARL Money
public typealias ARL = _Money<Currency.ARL>
/// ARM Money
public typealias ARM = _Money<Currency.ARM>
/// ARP Money
public typealias ARP = _Money<Currency.ARP>
/// ARS Money
public typealias ARS = _Money<Currency.ARS>
/// ATS Money
public typealias ATS = _Money<Currency.ATS>
/// AUD Money
public typealias AUD = _Money<Currency.AUD>
/// AWG Money
public typealias AWG = _Money<Currency.AWG>
/// AZM Money
public typealias AZM = _Money<Currency.AZM>
/// AZN Money
public typealias AZN = _Money<Currency.AZN>
/// BAD Money
public typealias BAD = _Money<Currency.BAD>
/// BAM Money
public typealias BAM = _Money<Currency.BAM>
/// BAN Money
public typealias BAN = _Money<Currency.BAN>
/// BBD Money
public typealias BBD = _Money<Currency.BBD>
/// BDT Money
public typealias BDT = _Money<Currency.BDT>
/// BEC Money
public typealias BEC = _Money<Currency.BEC>
/// BEF Money
public typealias BEF = _Money<Currency.BEF>
/// BEL Money
public typealias BEL = _Money<Currency.BEL>
/// BGL Money
public typealias BGL = _Money<Currency.BGL>
/// BGM Money
public typealias BGM = _Money<Currency.BGM>
/// BGN Money
public typealias BGN = _Money<Currency.BGN>
/// BGO Money
public typealias BGO = _Money<Currency.BGO>
/// BHD Money
public typealias BHD = _Money<Currency.BHD>
/// BIF Money
public typealias BIF = _Money<Currency.BIF>
/// BMD Money
public typealias BMD = _Money<Currency.BMD>
/// BND Money
public typealias BND = _Money<Currency.BND>
/// BOB Money
public typealias BOB = _Money<Currency.BOB>
/// BOL Money
public typealias BOL = _Money<Currency.BOL>
/// BOP Money
public typealias BOP = _Money<Currency.BOP>
/// BOV Money
public typealias BOV = _Money<Currency.BOV>
/// BRB Money
public typealias BRB = _Money<Currency.BRB>
/// BRC Money
public typealias BRC = _Money<Currency.BRC>
/// BRE Money
public typealias BRE = _Money<Currency.BRE>
/// BRL Money
public typealias BRL = _Money<Currency.BRL>
/// BRN Money
public typealias BRN = _Money<Currency.BRN>
/// BRR Money
public typealias BRR = _Money<Currency.BRR>
/// BRZ Money
public typealias BRZ = _Money<Currency.BRZ>
/// BSD Money
public typealias BSD = _Money<Currency.BSD>
/// BTN Money
public typealias BTN = _Money<Currency.BTN>
/// BUK Money
public typealias BUK = _Money<Currency.BUK>
/// BWP Money
public typealias BWP = _Money<Currency.BWP>
/// BYB Money
public typealias BYB = _Money<Currency.BYB>
/// BYR Money
public typealias BYR = _Money<Currency.BYR>
/// BZD Money
public typealias BZD = _Money<Currency.BZD>
/// CAD Money
public typealias CAD = _Money<Currency.CAD>
/// CDF Money
public typealias CDF = _Money<Currency.CDF>
/// CHE Money
public typealias CHE = _Money<Currency.CHE>
/// CHF Money
public typealias CHF = _Money<Currency.CHF>
/// CHW Money
public typealias CHW = _Money<Currency.CHW>
/// CLE Money
public typealias CLE = _Money<Currency.CLE>
/// CLF Money
public typealias CLF = _Money<Currency.CLF>
/// CLP Money
public typealias CLP = _Money<Currency.CLP>
/// CNX Money
public typealias CNX = _Money<Currency.CNX>
/// CNY Money
public typealias CNY = _Money<Currency.CNY>
/// COP Money
public typealias COP = _Money<Currency.COP>
/// COU Money
public typealias COU = _Money<Currency.COU>
/// CRC Money
public typealias CRC = _Money<Currency.CRC>
/// CSD Money
public typealias CSD = _Money<Currency.CSD>
/// CSK Money
public typealias CSK = _Money<Currency.CSK>
/// CUC Money
public typealias CUC = _Money<Currency.CUC>
/// CUP Money
public typealias CUP = _Money<Currency.CUP>
/// CVE Money
public typealias CVE = _Money<Currency.CVE>
/// CYP Money
public typealias CYP = _Money<Currency.CYP>
/// CZK Money
public typealias CZK = _Money<Currency.CZK>
/// DDM Money
public typealias DDM = _Money<Currency.DDM>
/// DEM Money
public typealias DEM = _Money<Currency.DEM>
/// DJF Money
public typealias DJF = _Money<Currency.DJF>
/// DKK Money
public typealias DKK = _Money<Currency.DKK>
/// DOP Money
public typealias DOP = _Money<Currency.DOP>
/// DZD Money
public typealias DZD = _Money<Currency.DZD>
/// ECS Money
public typealias ECS = _Money<Currency.ECS>
/// ECV Money
public typealias ECV = _Money<Currency.ECV>
/// EEK Money
public typealias EEK = _Money<Currency.EEK>
/// EGP Money
public typealias EGP = _Money<Currency.EGP>
/// EQE Money
public typealias EQE = _Money<Currency.EQE>
/// ERN Money
public typealias ERN = _Money<Currency.ERN>
/// ESA Money
public typealias ESA = _Money<Currency.ESA>
/// ESB Money
public typealias ESB = _Money<Currency.ESB>
/// ESP Money
public typealias ESP = _Money<Currency.ESP>
/// ETB Money
public typealias ETB = _Money<Currency.ETB>
/// EUR Money
public typealias EUR = _Money<Currency.EUR>
/// FIM Money
public typealias FIM = _Money<Currency.FIM>
/// FJD Money
public typealias FJD = _Money<Currency.FJD>
/// FKP Money
public typealias FKP = _Money<Currency.FKP>
/// FRF Money
public typealias FRF = _Money<Currency.FRF>
/// GBP Money
public typealias GBP = _Money<Currency.GBP>
/// GEK Money
public typealias GEK = _Money<Currency.GEK>
/// GEL Money
public typealias GEL = _Money<Currency.GEL>
/// GHC Money
public typealias GHC = _Money<Currency.GHC>
/// GHS Money
public typealias GHS = _Money<Currency.GHS>
/// GIP Money
public typealias GIP = _Money<Currency.GIP>
/// GMD Money
public typealias GMD = _Money<Currency.GMD>
/// GNF Money
public typealias GNF = _Money<Currency.GNF>
/// GNS Money
public typealias GNS = _Money<Currency.GNS>
/// GQE Money
public typealias GQE = _Money<Currency.GQE>
/// GRD Money
public typealias GRD = _Money<Currency.GRD>
/// GTQ Money
public typealias GTQ = _Money<Currency.GTQ>
/// GWE Money
public typealias GWE = _Money<Currency.GWE>
/// GWP Money
public typealias GWP = _Money<Currency.GWP>
/// GYD Money
public typealias GYD = _Money<Currency.GYD>
/// HKD Money
public typealias HKD = _Money<Currency.HKD>
/// HNL Money
public typealias HNL = _Money<Currency.HNL>
/// HRD Money
public typealias HRD = _Money<Currency.HRD>
/// HRK Money
public typealias HRK = _Money<Currency.HRK>
/// HTG Money
public typealias HTG = _Money<Currency.HTG>
/// HUF Money
public typealias HUF = _Money<Currency.HUF>
/// IDR Money
public typealias IDR = _Money<Currency.IDR>
/// IEP Money
public typealias IEP = _Money<Currency.IEP>
/// ILP Money
public typealias ILP = _Money<Currency.ILP>
/// ILR Money
public typealias ILR = _Money<Currency.ILR>
/// ILS Money
public typealias ILS = _Money<Currency.ILS>
/// INR Money
public typealias INR = _Money<Currency.INR>
/// IQD Money
public typealias IQD = _Money<Currency.IQD>
/// IRR Money
public typealias IRR = _Money<Currency.IRR>
/// ISJ Money
public typealias ISJ = _Money<Currency.ISJ>
/// ISK Money
public typealias ISK = _Money<Currency.ISK>
/// ITL Money
public typealias ITL = _Money<Currency.ITL>
/// JMD Money
public typealias JMD = _Money<Currency.JMD>
/// JOD Money
public typealias JOD = _Money<Currency.JOD>
/// JPY Money
public typealias JPY = _Money<Currency.JPY>
/// KES Money
public typealias KES = _Money<Currency.KES>
/// KGS Money
public typealias KGS = _Money<Currency.KGS>
/// KHR Money
public typealias KHR = _Money<Currency.KHR>
/// KMF Money
public typealias KMF = _Money<Currency.KMF>
/// KPW Money
public typealias KPW = _Money<Currency.KPW>
/// KRH Money
public typealias KRH = _Money<Currency.KRH>
/// KRO Money
public typealias KRO = _Money<Currency.KRO>
/// KRW Money
public typealias KRW = _Money<Currency.KRW>
/// KWD Money
public typealias KWD = _Money<Currency.KWD>
/// KYD Money
public typealias KYD = _Money<Currency.KYD>
/// KZT Money
public typealias KZT = _Money<Currency.KZT>
/// LAK Money
public typealias LAK = _Money<Currency.LAK>
/// LBP Money
public typealias LBP = _Money<Currency.LBP>
/// LKR Money
public typealias LKR = _Money<Currency.LKR>
/// LRD Money
public typealias LRD = _Money<Currency.LRD>
/// LSL Money
public typealias LSL = _Money<Currency.LSL>
/// LSM Money
public typealias LSM = _Money<Currency.LSM>
/// LTL Money
public typealias LTL = _Money<Currency.LTL>
/// LTT Money
public typealias LTT = _Money<Currency.LTT>
/// LUC Money
public typealias LUC = _Money<Currency.LUC>
/// LUF Money
public typealias LUF = _Money<Currency.LUF>
/// LUL Money
public typealias LUL = _Money<Currency.LUL>
/// LVL Money
public typealias LVL = _Money<Currency.LVL>
/// LVR Money
public typealias LVR = _Money<Currency.LVR>
/// LYD Money
public typealias LYD = _Money<Currency.LYD>
/// MAD Money
public typealias MAD = _Money<Currency.MAD>
/// MAF Money
public typealias MAF = _Money<Currency.MAF>
/// MCF Money
public typealias MCF = _Money<Currency.MCF>
/// MDC Money
public typealias MDC = _Money<Currency.MDC>
/// MDL Money
public typealias MDL = _Money<Currency.MDL>
/// MGA Money
public typealias MGA = _Money<Currency.MGA>
/// MGF Money
public typealias MGF = _Money<Currency.MGF>
/// MKD Money
public typealias MKD = _Money<Currency.MKD>
/// MKN Money
public typealias MKN = _Money<Currency.MKN>
/// MLF Money
public typealias MLF = _Money<Currency.MLF>
/// MMK Money
public typealias MMK = _Money<Currency.MMK>
/// MNT Money
public typealias MNT = _Money<Currency.MNT>
/// MOP Money
public typealias MOP = _Money<Currency.MOP>
/// MRO Money
public typealias MRO = _Money<Currency.MRO>
/// MTL Money
public typealias MTL = _Money<Currency.MTL>
/// MTP Money
public typealias MTP = _Money<Currency.MTP>
/// MUR Money
public typealias MUR = _Money<Currency.MUR>
/// MVP Money
public typealias MVP = _Money<Currency.MVP>
/// MVR Money
public typealias MVR = _Money<Currency.MVR>
/// MWK Money
public typealias MWK = _Money<Currency.MWK>
/// MXN Money
public typealias MXN = _Money<Currency.MXN>
/// MXP Money
public typealias MXP = _Money<Currency.MXP>
/// MXV Money
public typealias MXV = _Money<Currency.MXV>
/// MYR Money
public typealias MYR = _Money<Currency.MYR>
/// MZE Money
public typealias MZE = _Money<Currency.MZE>
/// MZM Money
public typealias MZM = _Money<Currency.MZM>
/// MZN Money
public typealias MZN = _Money<Currency.MZN>
/// NAD Money
public typealias NAD = _Money<Currency.NAD>
/// NGN Money
public typealias NGN = _Money<Currency.NGN>
/// NIC Money
public typealias NIC = _Money<Currency.NIC>
/// NIO Money
public typealias NIO = _Money<Currency.NIO>
/// NLG Money
public typealias NLG = _Money<Currency.NLG>
/// NOK Money
public typealias NOK = _Money<Currency.NOK>
/// NPR Money
public typealias NPR = _Money<Currency.NPR>
/// NZD Money
public typealias NZD = _Money<Currency.NZD>
/// OMR Money
public typealias OMR = _Money<Currency.OMR>
/// PAB Money
public typealias PAB = _Money<Currency.PAB>
/// PEI Money
public typealias PEI = _Money<Currency.PEI>
/// PEN Money
public typealias PEN = _Money<Currency.PEN>
/// PES Money
public typealias PES = _Money<Currency.PES>
/// PGK Money
public typealias PGK = _Money<Currency.PGK>
/// PHP Money
public typealias PHP = _Money<Currency.PHP>
/// PKR Money
public typealias PKR = _Money<Currency.PKR>
/// PLN Money
public typealias PLN = _Money<Currency.PLN>
/// PLZ Money
public typealias PLZ = _Money<Currency.PLZ>
/// PTE Money
public typealias PTE = _Money<Currency.PTE>
/// PYG Money
public typealias PYG = _Money<Currency.PYG>
/// QAR Money
public typealias QAR = _Money<Currency.QAR>
/// RHD Money
public typealias RHD = _Money<Currency.RHD>
/// ROL Money
public typealias ROL = _Money<Currency.ROL>
/// RON Money
public typealias RON = _Money<Currency.RON>
/// RSD Money
public typealias RSD = _Money<Currency.RSD>
/// RUB Money
public typealias RUB = _Money<Currency.RUB>
/// RUR Money
public typealias RUR = _Money<Currency.RUR>
/// RWF Money
public typealias RWF = _Money<Currency.RWF>
/// SAR Money
public typealias SAR = _Money<Currency.SAR>
/// SBD Money
public typealias SBD = _Money<Currency.SBD>
/// SCR Money
public typealias SCR = _Money<Currency.SCR>
/// SDD Money
public typealias SDD = _Money<Currency.SDD>
/// SDG Money
public typealias SDG = _Money<Currency.SDG>
/// SDP Money
public typealias SDP = _Money<Currency.SDP>
/// SEK Money
public typealias SEK = _Money<Currency.SEK>
/// SGD Money
public typealias SGD = _Money<Currency.SGD>
/// SHP Money
public typealias SHP = _Money<Currency.SHP>
/// SIT Money
public typealias SIT = _Money<Currency.SIT>
/// SKK Money
public typealias SKK = _Money<Currency.SKK>
/// SLL Money
public typealias SLL = _Money<Currency.SLL>
/// SOS Money
public typealias SOS = _Money<Currency.SOS>
/// SRD Money
public typealias SRD = _Money<Currency.SRD>
/// SRG Money
public typealias SRG = _Money<Currency.SRG>
/// SSP Money
public typealias SSP = _Money<Currency.SSP>
/// STD Money
public typealias STD = _Money<Currency.STD>
/// SUR Money
public typealias SUR = _Money<Currency.SUR>
/// SVC Money
public typealias SVC = _Money<Currency.SVC>
/// SYP Money
public typealias SYP = _Money<Currency.SYP>
/// SZL Money
public typealias SZL = _Money<Currency.SZL>
/// THB Money
public typealias THB = _Money<Currency.THB>
/// TJR Money
public typealias TJR = _Money<Currency.TJR>
/// TJS Money
public typealias TJS = _Money<Currency.TJS>
/// TMM Money
public typealias TMM = _Money<Currency.TMM>
/// TMT Money
public typealias TMT = _Money<Currency.TMT>
/// TND Money
public typealias TND = _Money<Currency.TND>
/// TOP Money
public typealias TOP = _Money<Currency.TOP>
/// TPE Money
public typealias TPE = _Money<Currency.TPE>
/// TRL Money
public typealias TRL = _Money<Currency.TRL>
/// TRY Money
public typealias TRY = _Money<Currency.TRY>
/// TTD Money
public typealias TTD = _Money<Currency.TTD>
/// TWD Money
public typealias TWD = _Money<Currency.TWD>
/// TZS Money
public typealias TZS = _Money<Currency.TZS>
/// UAH Money
public typealias UAH = _Money<Currency.UAH>
/// UAK Money
public typealias UAK = _Money<Currency.UAK>
/// UGS Money
public typealias UGS = _Money<Currency.UGS>
/// UGX Money
public typealias UGX = _Money<Currency.UGX>
/// USD Money
public typealias USD = _Money<Currency.USD>
/// USN Money
public typealias USN = _Money<Currency.USN>
/// USS Money
public typealias USS = _Money<Currency.USS>
/// UYI Money
public typealias UYI = _Money<Currency.UYI>
/// UYP Money
public typealias UYP = _Money<Currency.UYP>
/// UYU Money
public typealias UYU = _Money<Currency.UYU>
/// UZS Money
public typealias UZS = _Money<Currency.UZS>
/// VEB Money
public typealias VEB = _Money<Currency.VEB>
/// VEF Money
public typealias VEF = _Money<Currency.VEF>
/// VND Money
public typealias VND = _Money<Currency.VND>
/// VNN Money
public typealias VNN = _Money<Currency.VNN>
/// VUV Money
public typealias VUV = _Money<Currency.VUV>
/// WST Money
public typealias WST = _Money<Currency.WST>
/// XAF Money
public typealias XAF = _Money<Currency.XAF>
/// XAG Money
public typealias XAG = _Money<Currency.XAG>
/// XAU Money
public typealias XAU = _Money<Currency.XAU>
/// XBA Money
public typealias XBA = _Money<Currency.XBA>
/// XBB Money
public typealias XBB = _Money<Currency.XBB>
/// XBC Money
public typealias XBC = _Money<Currency.XBC>
/// XBD Money
public typealias XBD = _Money<Currency.XBD>
/// XCD Money
public typealias XCD = _Money<Currency.XCD>
/// XDR Money
public typealias XDR = _Money<Currency.XDR>
/// XEU Money
public typealias XEU = _Money<Currency.XEU>
/// XFO Money
public typealias XFO = _Money<Currency.XFO>
/// XFU Money
public typealias XFU = _Money<Currency.XFU>
/// XOF Money
public typealias XOF = _Money<Currency.XOF>
/// XPD Money
public typealias XPD = _Money<Currency.XPD>
/// XPF Money
public typealias XPF = _Money<Currency.XPF>
/// XPT Money
public typealias XPT = _Money<Currency.XPT>
/// XRE Money
public typealias XRE = _Money<Currency.XRE>
/// XSU Money
public typealias XSU = _Money<Currency.XSU>
/// XTS Money
public typealias XTS = _Money<Currency.XTS>
/// XUA Money
public typealias XUA = _Money<Currency.XUA>
/// XXX Money
public typealias XXX = _Money<Currency.XXX>
/// YDD Money
public typealias YDD = _Money<Currency.YDD>
/// YER Money
public typealias YER = _Money<Currency.YER>
/// YUD Money
public typealias YUD = _Money<Currency.YUD>
/// YUM Money
public typealias YUM = _Money<Currency.YUM>
/// YUN Money
public typealias YUN = _Money<Currency.YUN>
/// YUR Money
public typealias YUR = _Money<Currency.YUR>
/// ZAL Money
public typealias ZAL = _Money<Currency.ZAL>
/// ZAR Money
public typealias ZAR = _Money<Currency.ZAR>
/// ZMK Money
public typealias ZMK = _Money<Currency.ZMK>
/// ZMW Money
public typealias ZMW = _Money<Currency.ZMW>
/// ZRN Money
public typealias ZRN = _Money<Currency.ZRN>
/// ZRZ Money
public typealias ZRZ = _Money<Currency.ZRZ>
/// ZWL Money
public typealias ZWL = _Money<Currency.ZWL>
/// ZWR Money
public typealias ZWR = _Money<Currency.ZWR>
/// ZWD Money
public typealias ZWD = _Money<Currency.ZWD>


// MARK: - Country Types

/**
 An enum of countries which speak Afrikaans.
*/
public enum AfrikaansSpeakingCountry: CountryType {

    /// Namibia is a country which speaks Afrikaans.
    case Namibia
    /// South Africa is a country which speaks Afrikaans.
    case SouthAfrica

    /// - returns: an Array of all the countries which speak Afrikaans
    public static let all: [AfrikaansSpeakingCountry] = [ .Namibia, .SouthAfrica ]

    /// - returns: the country identifier of a specific Afrikaans speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Namibia:
            return "NA"
        case .SouthAfrica:
            return "ZA"
        }
    }
}

/**
 An enum of countries which speak Albanian.
*/
public enum AlbanianSpeakingCountry: CountryType {

    /// Albania is a country which speaks Albanian.
    case Albania
    /// Macedonia is a country which speaks Albanian.
    case Macedonia
    /// Kosovo is a country which speaks Albanian.
    case Kosovo

    /// - returns: an Array of all the countries which speak Albanian
    public static let all: [AlbanianSpeakingCountry] = [ .Albania, .Macedonia, .Kosovo ]

    /// - returns: the country identifier of a specific Albanian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Albania:
            return "AL"
        case .Macedonia:
            return "MK"
        case .Kosovo:
            return "XK"
        }
    }
}

/**
 An enum of countries which speak Arabic.
*/
public enum ArabicSpeakingCountry: CountryType {

    /// World is a country which speaks Arabic.
    case World
    /// United Arab Emirates is a country which speaks Arabic.
    case UnitedArabEmirates
    /// Bahrain is a country which speaks Arabic.
    case Bahrain
    /// Djibouti is a country which speaks Arabic.
    case Djibouti
    /// Algeria is a country which speaks Arabic.
    case Algeria
    /// Egypt is a country which speaks Arabic.
    case Egypt
    /// Western Sahara is a country which speaks Arabic.
    case WesternSahara
    /// Eritrea is a country which speaks Arabic.
    case Eritrea
    /// Israel is a country which speaks Arabic.
    case Israel
    /// Iraq is a country which speaks Arabic.
    case Iraq
    /// Jordan is a country which speaks Arabic.
    case Jordan
    /// Comoros is a country which speaks Arabic.
    case Comoros
    /// Kuwait is a country which speaks Arabic.
    case Kuwait
    /// Lebanon is a country which speaks Arabic.
    case Lebanon
    /// Libya is a country which speaks Arabic.
    case Libya
    /// Morocco is a country which speaks Arabic.
    case Morocco
    /// Mauritania is a country which speaks Arabic.
    case Mauritania
    /// Oman is a country which speaks Arabic.
    case Oman
    /// Palestinian Territories is a country which speaks Arabic.
    case PalestinianTerritories
    /// Qatar is a country which speaks Arabic.
    case Qatar
    /// Saudi Arabia is a country which speaks Arabic.
    case SaudiArabia
    /// Sudan is a country which speaks Arabic.
    case Sudan
    /// Somalia is a country which speaks Arabic.
    case Somalia
    /// South Sudan is a country which speaks Arabic.
    case SouthSudan
    /// Syria is a country which speaks Arabic.
    case Syria
    /// Chad is a country which speaks Arabic.
    case Chad
    /// Tunisia is a country which speaks Arabic.
    case Tunisia
    /// Yemen is a country which speaks Arabic.
    case Yemen

    /// - returns: an Array of all the countries which speak Arabic
    public static let all: [ArabicSpeakingCountry] = [ .World, .UnitedArabEmirates, .Bahrain, .Djibouti, .Algeria, .Egypt, .WesternSahara, .Eritrea, .Israel, .Iraq, .Jordan, .Comoros, .Kuwait, .Lebanon, .Libya, .Morocco, .Mauritania, .Oman, .PalestinianTerritories, .Qatar, .SaudiArabia, .Sudan, .Somalia, .SouthSudan, .Syria, .Chad, .Tunisia, .Yemen ]

    /// - returns: the country identifier of a specific Arabic speaking country.
    public var countryIdentifier: String {
        switch self {
        case .World:
            return "001"
        case .UnitedArabEmirates:
            return "AE"
        case .Bahrain:
            return "BH"
        case .Djibouti:
            return "DJ"
        case .Algeria:
            return "DZ"
        case .Egypt:
            return "EG"
        case .WesternSahara:
            return "EH"
        case .Eritrea:
            return "ER"
        case .Israel:
            return "IL"
        case .Iraq:
            return "IQ"
        case .Jordan:
            return "JO"
        case .Comoros:
            return "KM"
        case .Kuwait:
            return "KW"
        case .Lebanon:
            return "LB"
        case .Libya:
            return "LY"
        case .Morocco:
            return "MA"
        case .Mauritania:
            return "MR"
        case .Oman:
            return "OM"
        case .PalestinianTerritories:
            return "PS"
        case .Qatar:
            return "QA"
        case .SaudiArabia:
            return "SA"
        case .Sudan:
            return "SD"
        case .Somalia:
            return "SO"
        case .SouthSudan:
            return "SS"
        case .Syria:
            return "SY"
        case .Chad:
            return "TD"
        case .Tunisia:
            return "TN"
        case .Yemen:
            return "YE"
        }
    }
}

/**
 An enum of countries which speak Bengali.
*/
public enum BengaliSpeakingCountry: CountryType {

    /// Bangladesh is a country which speaks Bengali.
    case Bangladesh
    /// India is a country which speaks Bengali.
    case India

    /// - returns: an Array of all the countries which speak Bengali
    public static let all: [BengaliSpeakingCountry] = [ .Bangladesh, .India ]

    /// - returns: the country identifier of a specific Bengali speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Bangladesh:
            return "BD"
        case .India:
            return "IN"
        }
    }
}

/**
 An enum of countries which speak Catalan.
*/
public enum CatalanSpeakingCountry: CountryType {

    /// Andorra is a country which speaks Catalan.
    case Andorra
    /// Spain is a country which speaks Catalan.
    case Spain
    /// France is a country which speaks Catalan.
    case France
    /// Italy is a country which speaks Catalan.
    case Italy

    /// - returns: an Array of all the countries which speak Catalan
    public static let all: [CatalanSpeakingCountry] = [ .Andorra, .Spain, .France, .Italy ]

    /// - returns: the country identifier of a specific Catalan speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Andorra:
            return "AD"
        case .Spain:
            return "ES"
        case .France:
            return "FR"
        case .Italy:
            return "IT"
        }
    }
}

/**
 An enum of countries which speak Central Kurdish.
*/
public enum CentralKurdishSpeakingCountry: CountryType {

    /// Iraq is a country which speaks Central Kurdish.
    case Iraq
    /// Iran is a country which speaks Central Kurdish.
    case Iran

    /// - returns: an Array of all the countries which speak Central Kurdish
    public static let all: [CentralKurdishSpeakingCountry] = [ .Iraq, .Iran ]

    /// - returns: the country identifier of a specific Central Kurdish speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Iraq:
            return "IQ"
        case .Iran:
            return "IR"
        }
    }
}

/**
 An enum of countries which speak Chinese.
*/
public enum ChineseSpeakingCountry: CountryType {

    /// China is a country which speaks Chinese.
    case China
    /// Hong Kong (China) is a country which speaks Chinese.
    case HongKongChina
    /// Macau (China) is a country which speaks Chinese.
    case MacauChina
    /// Singapore is a country which speaks Chinese.
    case Singapore
    /// Taiwan is a country which speaks Chinese.
    case Taiwan

    /// - returns: an Array of all the countries which speak Chinese
    public static let all: [ChineseSpeakingCountry] = [ .China, .HongKongChina, .MacauChina, .Singapore, .Taiwan ]

    /// - returns: the country identifier of a specific Chinese speaking country.
    public var countryIdentifier: String {
        switch self {
        case .China:
            return "CN"
        case .HongKongChina:
            return "HK"
        case .MacauChina:
            return "MO"
        case .Singapore:
            return "SG"
        case .Taiwan:
            return "TW"
        }
    }
}

/**
 An enum of countries which speak Croatian.
*/
public enum CroatianSpeakingCountry: CountryType {

    /// Bosnia & Herzegovina is a country which speaks Croatian.
    case BosniaHerzegovina
    /// Croatia is a country which speaks Croatian.
    case Croatia

    /// - returns: an Array of all the countries which speak Croatian
    public static let all: [CroatianSpeakingCountry] = [ .BosniaHerzegovina, .Croatia ]

    /// - returns: the country identifier of a specific Croatian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .BosniaHerzegovina:
            return "BA"
        case .Croatia:
            return "HR"
        }
    }
}

/**
 An enum of countries which speak Danish.
*/
public enum DanishSpeakingCountry: CountryType {

    /// Denmark is a country which speaks Danish.
    case Denmark
    /// Greenland is a country which speaks Danish.
    case Greenland

    /// - returns: an Array of all the countries which speak Danish
    public static let all: [DanishSpeakingCountry] = [ .Denmark, .Greenland ]

    /// - returns: the country identifier of a specific Danish speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Denmark:
            return "DK"
        case .Greenland:
            return "GL"
        }
    }
}

/**
 An enum of countries which speak Dutch.
*/
public enum DutchSpeakingCountry: CountryType {

    /// Aruba is a country which speaks Dutch.
    case Aruba
    /// Belgium is a country which speaks Dutch.
    case Belgium
    /// Caribbean Netherlands is a country which speaks Dutch.
    case CaribbeanNetherlands
    /// Curaçao is a country which speaks Dutch.
    case Curaçao
    /// Netherlands is a country which speaks Dutch.
    case Netherlands
    /// Suriname is a country which speaks Dutch.
    case Suriname
    /// Sint Maarten is a country which speaks Dutch.
    case SintMaarten

    /// - returns: an Array of all the countries which speak Dutch
    public static let all: [DutchSpeakingCountry] = [ .Aruba, .Belgium, .CaribbeanNetherlands, .Curaçao, .Netherlands, .Suriname, .SintMaarten ]

    /// - returns: the country identifier of a specific Dutch speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Aruba:
            return "AW"
        case .Belgium:
            return "BE"
        case .CaribbeanNetherlands:
            return "BQ"
        case .Curaçao:
            return "CW"
        case .Netherlands:
            return "NL"
        case .Suriname:
            return "SR"
        case .SintMaarten:
            return "SX"
        }
    }
}

/**
 An enum of countries which speak English.
*/
public enum EnglishSpeakingCountry: CountryType {

    /// World is a country which speaks English.
    case World
    /// Europe is a country which speaks English.
    case Europe
    /// Andorra is a country which speaks English.
    case Andorra
    /// Antigua & Barbuda is a country which speaks English.
    case AntiguaBarbuda
    /// Anguilla is a country which speaks English.
    case Anguilla
    /// Albania is a country which speaks English.
    case Albania
    /// American Samoa is a country which speaks English.
    case AmericanSamoa
    /// Austria is a country which speaks English.
    case Austria
    /// Australia is a country which speaks English.
    case Australia
    /// Bosnia & Herzegovina is a country which speaks English.
    case BosniaHerzegovina
    /// Barbados is a country which speaks English.
    case Barbados
    /// Belgium is a country which speaks English.
    case Belgium
    /// Burundi is a country which speaks English.
    case Burundi
    /// Bermuda is a country which speaks English.
    case Bermuda
    /// Brazil is a country which speaks English.
    case Brazil
    /// Bahamas is a country which speaks English.
    case Bahamas
    /// Botswana is a country which speaks English.
    case Botswana
    /// Belize is a country which speaks English.
    case Belize
    /// Canada is a country which speaks English.
    case Canada
    /// Cocos (Keeling) Islands is a country which speaks English.
    case CocosKeelingIslands
    /// Switzerland is a country which speaks English.
    case Switzerland
    /// Cook Islands is a country which speaks English.
    case CookIslands
    /// Cameroon is a country which speaks English.
    case Cameroon
    /// China is a country which speaks English.
    case China
    /// Christmas Island is a country which speaks English.
    case ChristmasIsland
    /// Cyprus is a country which speaks English.
    case Cyprus
    /// Czech Republic is a country which speaks English.
    case CzechRepublic
    /// Germany is a country which speaks English.
    case Germany
    /// Diego Garcia is a country which speaks English.
    case DiegoGarcia
    /// Denmark is a country which speaks English.
    case Denmark
    /// Dominica is a country which speaks English.
    case Dominica
    /// Estonia is a country which speaks English.
    case Estonia
    /// Eritrea is a country which speaks English.
    case Eritrea
    /// Spain is a country which speaks English.
    case Spain
    /// Finland is a country which speaks English.
    case Finland
    /// Fiji is a country which speaks English.
    case Fiji
    /// Falkland Islands is a country which speaks English.
    case FalklandIslands
    /// Micronesia is a country which speaks English.
    case Micronesia
    /// France is a country which speaks English.
    case France
    /// United Kingdom is a country which speaks English.
    case UnitedKingdom
    /// Grenada is a country which speaks English.
    case Grenada
    /// Guernsey is a country which speaks English.
    case Guernsey
    /// Ghana is a country which speaks English.
    case Ghana
    /// Gibraltar is a country which speaks English.
    case Gibraltar
    /// Gambia is a country which speaks English.
    case Gambia
    /// Greece is a country which speaks English.
    case Greece
    /// Guam is a country which speaks English.
    case Guam
    /// Guyana is a country which speaks English.
    case Guyana
    /// Hong Kong (China) is a country which speaks English.
    case HongKongChina
    /// Croatia is a country which speaks English.
    case Croatia
    /// Hungary is a country which speaks English.
    case Hungary
    /// Ireland is a country which speaks English.
    case Ireland
    /// Israel is a country which speaks English.
    case Israel
    /// Isle of Man is a country which speaks English.
    case IsleOfMan
    /// India is a country which speaks English.
    case India
    /// British Indian Ocean Territory is a country which speaks English.
    case BritishIndianOceanTerritory
    /// Iceland is a country which speaks English.
    case Iceland
    /// Italy is a country which speaks English.
    case Italy
    /// Jersey is a country which speaks English.
    case Jersey
    /// Jamaica is a country which speaks English.
    case Jamaica
    /// Japan is a country which speaks English.
    case Japan
    /// Kenya is a country which speaks English.
    case Kenya
    /// Kiribati is a country which speaks English.
    case Kiribati
    /// St. Kitts & Nevis is a country which speaks English.
    case StKittsNevis
    /// South Korea is a country which speaks English.
    case SouthKorea
    /// Cayman Islands is a country which speaks English.
    case CaymanIslands
    /// St. Lucia is a country which speaks English.
    case StLucia
    /// Liberia is a country which speaks English.
    case Liberia
    /// Lesotho is a country which speaks English.
    case Lesotho
    /// Lithuania is a country which speaks English.
    case Lithuania
    /// Luxembourg is a country which speaks English.
    case Luxembourg
    /// Latvia is a country which speaks English.
    case Latvia
    /// Montenegro is a country which speaks English.
    case Montenegro
    /// Madagascar is a country which speaks English.
    case Madagascar
    /// Marshall Islands is a country which speaks English.
    case MarshallIslands
    /// Macau (China) is a country which speaks English.
    case MacauChina
    /// Northern Mariana Islands is a country which speaks English.
    case NorthernMarianaIslands
    /// Montserrat is a country which speaks English.
    case Montserrat
    /// Malta is a country which speaks English.
    case Malta
    /// Mauritius is a country which speaks English.
    case Mauritius
    /// Maldives is a country which speaks English.
    case Maldives
    /// Malawi is a country which speaks English.
    case Malawi
    /// Malaysia is a country which speaks English.
    case Malaysia
    /// Namibia is a country which speaks English.
    case Namibia
    /// Norfolk Island is a country which speaks English.
    case NorfolkIsland
    /// Nigeria is a country which speaks English.
    case Nigeria
    /// Netherlands is a country which speaks English.
    case Netherlands
    /// Norway is a country which speaks English.
    case Norway
    /// Nauru is a country which speaks English.
    case Nauru
    /// Niue is a country which speaks English.
    case Niue
    /// New Zealand is a country which speaks English.
    case NewZealand
    /// Papua New Guinea is a country which speaks English.
    case PapuaNewGuinea
    /// Philippines is a country which speaks English.
    case Philippines
    /// Pakistan is a country which speaks English.
    case Pakistan
    /// Poland is a country which speaks English.
    case Poland
    /// Pitcairn Islands is a country which speaks English.
    case PitcairnIslands
    /// Puerto Rico is a country which speaks English.
    case PuertoRico
    /// Portugal is a country which speaks English.
    case Portugal
    /// Palau is a country which speaks English.
    case Palau
    /// Romania is a country which speaks English.
    case Romania
    /// Russia is a country which speaks English.
    case Russia
    /// Rwanda is a country which speaks English.
    case Rwanda
    /// Solomon Islands is a country which speaks English.
    case SolomonIslands
    /// Seychelles is a country which speaks English.
    case Seychelles
    /// Sudan is a country which speaks English.
    case Sudan
    /// Sweden is a country which speaks English.
    case Sweden
    /// Singapore is a country which speaks English.
    case Singapore
    /// St. Helena is a country which speaks English.
    case StHelena
    /// Slovenia is a country which speaks English.
    case Slovenia
    /// Slovakia is a country which speaks English.
    case Slovakia
    /// Sierra Leone is a country which speaks English.
    case SierraLeone
    /// South Sudan is a country which speaks English.
    case SouthSudan
    /// Sint Maarten is a country which speaks English.
    case SintMaarten
    /// Swaziland is a country which speaks English.
    case Swaziland
    /// Turks & Caicos Islands is a country which speaks English.
    case TurksCaicosIslands
    /// Tokelau is a country which speaks English.
    case Tokelau
    /// Tonga is a country which speaks English.
    case Tonga
    /// Turkey is a country which speaks English.
    case Turkey
    /// Trinidad & Tobago is a country which speaks English.
    case TrinidadTobago
    /// Tuvalu is a country which speaks English.
    case Tuvalu
    /// Taiwan is a country which speaks English.
    case Taiwan
    /// Tanzania is a country which speaks English.
    case Tanzania
    /// Uganda is a country which speaks English.
    case Uganda
    /// U.S. Outlying Islands is a country which speaks English.
    case USOutlyingIslands
    /// United States is a country which speaks English.
    case UnitedStates
    /// St. Vincent & Grenadines is a country which speaks English.
    case StVincentGrenadines
    /// British Virgin Islands is a country which speaks English.
    case BritishVirginIslands
    /// U.S. Virgin Islands is a country which speaks English.
    case USVirginIslands
    /// Vanuatu is a country which speaks English.
    case Vanuatu
    /// Samoa is a country which speaks English.
    case Samoa
    /// South Africa is a country which speaks English.
    case SouthAfrica
    /// Zambia is a country which speaks English.
    case Zambia
    /// Zimbabwe is a country which speaks English.
    case Zimbabwe

    /// - returns: an Array of all the countries which speak English
    public static let all: [EnglishSpeakingCountry] = [ .World, .Europe, .Andorra, .AntiguaBarbuda, .Anguilla, .Albania, .AmericanSamoa, .Austria, .Australia, .BosniaHerzegovina, .Barbados, .Belgium, .Burundi, .Bermuda, .Brazil, .Bahamas, .Botswana, .Belize, .Canada, .CocosKeelingIslands, .Switzerland, .CookIslands, .Cameroon, .China, .ChristmasIsland, .Cyprus, .CzechRepublic, .Germany, .DiegoGarcia, .Denmark, .Dominica, .Estonia, .Eritrea, .Spain, .Finland, .Fiji, .FalklandIslands, .Micronesia, .France, .UnitedKingdom, .Grenada, .Guernsey, .Ghana, .Gibraltar, .Gambia, .Greece, .Guam, .Guyana, .HongKongChina, .Croatia, .Hungary, .Ireland, .Israel, .IsleOfMan, .India, .BritishIndianOceanTerritory, .Iceland, .Italy, .Jersey, .Jamaica, .Japan, .Kenya, .Kiribati, .StKittsNevis, .SouthKorea, .CaymanIslands, .StLucia, .Liberia, .Lesotho, .Lithuania, .Luxembourg, .Latvia, .Montenegro, .Madagascar, .MarshallIslands, .MacauChina, .NorthernMarianaIslands, .Montserrat, .Malta, .Mauritius, .Maldives, .Malawi, .Malaysia, .Namibia, .NorfolkIsland, .Nigeria, .Netherlands, .Norway, .Nauru, .Niue, .NewZealand, .PapuaNewGuinea, .Philippines, .Pakistan, .Poland, .PitcairnIslands, .PuertoRico, .Portugal, .Palau, .Romania, .Russia, .Rwanda, .SolomonIslands, .Seychelles, .Sudan, .Sweden, .Singapore, .StHelena, .Slovenia, .Slovakia, .SierraLeone, .SouthSudan, .SintMaarten, .Swaziland, .TurksCaicosIslands, .Tokelau, .Tonga, .Turkey, .TrinidadTobago, .Tuvalu, .Taiwan, .Tanzania, .Uganda, .USOutlyingIslands, .UnitedStates, .StVincentGrenadines, .BritishVirginIslands, .USVirginIslands, .Vanuatu, .Samoa, .SouthAfrica, .Zambia, .Zimbabwe ]

    /// - returns: the country identifier of a specific English speaking country.
    public var countryIdentifier: String {
        switch self {
        case .World:
            return "001"
        case .Europe:
            return "150"
        case .Andorra:
            return "AD"
        case .AntiguaBarbuda:
            return "AG"
        case .Anguilla:
            return "AI"
        case .Albania:
            return "AL"
        case .AmericanSamoa:
            return "AS"
        case .Austria:
            return "AT"
        case .Australia:
            return "AU"
        case .BosniaHerzegovina:
            return "BA"
        case .Barbados:
            return "BB"
        case .Belgium:
            return "BE"
        case .Burundi:
            return "BI"
        case .Bermuda:
            return "BM"
        case .Brazil:
            return "BR"
        case .Bahamas:
            return "BS"
        case .Botswana:
            return "BW"
        case .Belize:
            return "BZ"
        case .Canada:
            return "CA"
        case .CocosKeelingIslands:
            return "CC"
        case .Switzerland:
            return "CH"
        case .CookIslands:
            return "CK"
        case .Cameroon:
            return "CM"
        case .China:
            return "CN"
        case .ChristmasIsland:
            return "CX"
        case .Cyprus:
            return "CY"
        case .CzechRepublic:
            return "CZ"
        case .Germany:
            return "DE"
        case .DiegoGarcia:
            return "DG"
        case .Denmark:
            return "DK"
        case .Dominica:
            return "DM"
        case .Estonia:
            return "EE"
        case .Eritrea:
            return "ER"
        case .Spain:
            return "ES"
        case .Finland:
            return "FI"
        case .Fiji:
            return "FJ"
        case .FalklandIslands:
            return "FK"
        case .Micronesia:
            return "FM"
        case .France:
            return "FR"
        case .UnitedKingdom:
            return "GB"
        case .Grenada:
            return "GD"
        case .Guernsey:
            return "GG"
        case .Ghana:
            return "GH"
        case .Gibraltar:
            return "GI"
        case .Gambia:
            return "GM"
        case .Greece:
            return "GR"
        case .Guam:
            return "GU"
        case .Guyana:
            return "GY"
        case .HongKongChina:
            return "HK"
        case .Croatia:
            return "HR"
        case .Hungary:
            return "HU"
        case .Ireland:
            return "IE"
        case .Israel:
            return "IL"
        case .IsleOfMan:
            return "IM"
        case .India:
            return "IN"
        case .BritishIndianOceanTerritory:
            return "IO"
        case .Iceland:
            return "IS"
        case .Italy:
            return "IT"
        case .Jersey:
            return "JE"
        case .Jamaica:
            return "JM"
        case .Japan:
            return "JP"
        case .Kenya:
            return "KE"
        case .Kiribati:
            return "KI"
        case .StKittsNevis:
            return "KN"
        case .SouthKorea:
            return "KR"
        case .CaymanIslands:
            return "KY"
        case .StLucia:
            return "LC"
        case .Liberia:
            return "LR"
        case .Lesotho:
            return "LS"
        case .Lithuania:
            return "LT"
        case .Luxembourg:
            return "LU"
        case .Latvia:
            return "LV"
        case .Montenegro:
            return "ME"
        case .Madagascar:
            return "MG"
        case .MarshallIslands:
            return "MH"
        case .MacauChina:
            return "MO"
        case .NorthernMarianaIslands:
            return "MP"
        case .Montserrat:
            return "MS"
        case .Malta:
            return "MT"
        case .Mauritius:
            return "MU"
        case .Maldives:
            return "MV"
        case .Malawi:
            return "MW"
        case .Malaysia:
            return "MY"
        case .Namibia:
            return "NA"
        case .NorfolkIsland:
            return "NF"
        case .Nigeria:
            return "NG"
        case .Netherlands:
            return "NL"
        case .Norway:
            return "NO"
        case .Nauru:
            return "NR"
        case .Niue:
            return "NU"
        case .NewZealand:
            return "NZ"
        case .PapuaNewGuinea:
            return "PG"
        case .Philippines:
            return "PH"
        case .Pakistan:
            return "PK"
        case .Poland:
            return "PL"
        case .PitcairnIslands:
            return "PN"
        case .PuertoRico:
            return "PR"
        case .Portugal:
            return "PT"
        case .Palau:
            return "PW"
        case .Romania:
            return "RO"
        case .Russia:
            return "RU"
        case .Rwanda:
            return "RW"
        case .SolomonIslands:
            return "SB"
        case .Seychelles:
            return "SC"
        case .Sudan:
            return "SD"
        case .Sweden:
            return "SE"
        case .Singapore:
            return "SG"
        case .StHelena:
            return "SH"
        case .Slovenia:
            return "SI"
        case .Slovakia:
            return "SK"
        case .SierraLeone:
            return "SL"
        case .SouthSudan:
            return "SS"
        case .SintMaarten:
            return "SX"
        case .Swaziland:
            return "SZ"
        case .TurksCaicosIslands:
            return "TC"
        case .Tokelau:
            return "TK"
        case .Tonga:
            return "TO"
        case .Turkey:
            return "TR"
        case .TrinidadTobago:
            return "TT"
        case .Tuvalu:
            return "TV"
        case .Taiwan:
            return "TW"
        case .Tanzania:
            return "TZ"
        case .Uganda:
            return "UG"
        case .USOutlyingIslands:
            return "UM"
        case .UnitedStates:
            return "US"
        case .StVincentGrenadines:
            return "VC"
        case .BritishVirginIslands:
            return "VG"
        case .USVirginIslands:
            return "VI"
        case .Vanuatu:
            return "VU"
        case .Samoa:
            return "WS"
        case .SouthAfrica:
            return "ZA"
        case .Zambia:
            return "ZM"
        case .Zimbabwe:
            return "ZW"
        }
    }
}

/**
 An enum of countries which speak Ewe.
*/
public enum EweSpeakingCountry: CountryType {

    /// Ghana is a country which speaks Ewe.
    case Ghana
    /// Togo is a country which speaks Ewe.
    case Togo

    /// - returns: an Array of all the countries which speak Ewe
    public static let all: [EweSpeakingCountry] = [ .Ghana, .Togo ]

    /// - returns: the country identifier of a specific Ewe speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Ghana:
            return "GH"
        case .Togo:
            return "TG"
        }
    }
}

/**
 An enum of countries which speak Faroese.
*/
public enum FaroeseSpeakingCountry: CountryType {

    /// Denmark is a country which speaks Faroese.
    case Denmark
    /// Faroe Islands is a country which speaks Faroese.
    case FaroeIslands

    /// - returns: an Array of all the countries which speak Faroese
    public static let all: [FaroeseSpeakingCountry] = [ .Denmark, .FaroeIslands ]

    /// - returns: the country identifier of a specific Faroese speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Denmark:
            return "DK"
        case .FaroeIslands:
            return "FO"
        }
    }
}

/**
 An enum of countries which speak French.
*/
public enum FrenchSpeakingCountry: CountryType {

    /// Belgium is a country which speaks French.
    case Belgium
    /// Burkina Faso is a country which speaks French.
    case BurkinaFaso
    /// Burundi is a country which speaks French.
    case Burundi
    /// Benin is a country which speaks French.
    case Benin
    /// St. Barthélemy is a country which speaks French.
    case StBarthélemy
    /// Canada is a country which speaks French.
    case Canada
    /// Congo - Kinshasa is a country which speaks French.
    case CongoKinshasa
    /// Central African Republic is a country which speaks French.
    case CentralAfricanRepublic
    /// Congo - Brazzaville is a country which speaks French.
    case CongoBrazzaville
    /// Switzerland is a country which speaks French.
    case Switzerland
    /// Côte d’Ivoire is a country which speaks French.
    case CôteDivoire
    /// Cameroon is a country which speaks French.
    case Cameroon
    /// Djibouti is a country which speaks French.
    case Djibouti
    /// Algeria is a country which speaks French.
    case Algeria
    /// France is a country which speaks French.
    case France
    /// Gabon is a country which speaks French.
    case Gabon
    /// French Guiana is a country which speaks French.
    case FrenchGuiana
    /// Guinea is a country which speaks French.
    case Guinea
    /// Guadeloupe is a country which speaks French.
    case Guadeloupe
    /// Equatorial Guinea is a country which speaks French.
    case EquatorialGuinea
    /// Haiti is a country which speaks French.
    case Haiti
    /// Comoros is a country which speaks French.
    case Comoros
    /// Luxembourg is a country which speaks French.
    case Luxembourg
    /// Morocco is a country which speaks French.
    case Morocco
    /// Monaco is a country which speaks French.
    case Monaco
    /// St. Martin is a country which speaks French.
    case StMartin
    /// Madagascar is a country which speaks French.
    case Madagascar
    /// Mali is a country which speaks French.
    case Mali
    /// Martinique is a country which speaks French.
    case Martinique
    /// Mauritania is a country which speaks French.
    case Mauritania
    /// Mauritius is a country which speaks French.
    case Mauritius
    /// New Caledonia is a country which speaks French.
    case NewCaledonia
    /// Niger is a country which speaks French.
    case Niger
    /// French Polynesia is a country which speaks French.
    case FrenchPolynesia
    /// St. Pierre & Miquelon is a country which speaks French.
    case StPierreMiquelon
    /// Réunion is a country which speaks French.
    case Réunion
    /// Rwanda is a country which speaks French.
    case Rwanda
    /// Seychelles is a country which speaks French.
    case Seychelles
    /// Senegal is a country which speaks French.
    case Senegal
    /// Syria is a country which speaks French.
    case Syria
    /// Chad is a country which speaks French.
    case Chad
    /// Togo is a country which speaks French.
    case Togo
    /// Tunisia is a country which speaks French.
    case Tunisia
    /// Vanuatu is a country which speaks French.
    case Vanuatu
    /// Wallis & Futuna is a country which speaks French.
    case WallisFutuna
    /// Mayotte is a country which speaks French.
    case Mayotte

    /// - returns: an Array of all the countries which speak French
    public static let all: [FrenchSpeakingCountry] = [ .Belgium, .BurkinaFaso, .Burundi, .Benin, .StBarthélemy, .Canada, .CongoKinshasa, .CentralAfricanRepublic, .CongoBrazzaville, .Switzerland, .CôteDivoire, .Cameroon, .Djibouti, .Algeria, .France, .Gabon, .FrenchGuiana, .Guinea, .Guadeloupe, .EquatorialGuinea, .Haiti, .Comoros, .Luxembourg, .Morocco, .Monaco, .StMartin, .Madagascar, .Mali, .Martinique, .Mauritania, .Mauritius, .NewCaledonia, .Niger, .FrenchPolynesia, .StPierreMiquelon, .Réunion, .Rwanda, .Seychelles, .Senegal, .Syria, .Chad, .Togo, .Tunisia, .Vanuatu, .WallisFutuna, .Mayotte ]

    /// - returns: the country identifier of a specific French speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Belgium:
            return "BE"
        case .BurkinaFaso:
            return "BF"
        case .Burundi:
            return "BI"
        case .Benin:
            return "BJ"
        case .StBarthélemy:
            return "BL"
        case .Canada:
            return "CA"
        case .CongoKinshasa:
            return "CD"
        case .CentralAfricanRepublic:
            return "CF"
        case .CongoBrazzaville:
            return "CG"
        case .Switzerland:
            return "CH"
        case .CôteDivoire:
            return "CI"
        case .Cameroon:
            return "CM"
        case .Djibouti:
            return "DJ"
        case .Algeria:
            return "DZ"
        case .France:
            return "FR"
        case .Gabon:
            return "GA"
        case .FrenchGuiana:
            return "GF"
        case .Guinea:
            return "GN"
        case .Guadeloupe:
            return "GP"
        case .EquatorialGuinea:
            return "GQ"
        case .Haiti:
            return "HT"
        case .Comoros:
            return "KM"
        case .Luxembourg:
            return "LU"
        case .Morocco:
            return "MA"
        case .Monaco:
            return "MC"
        case .StMartin:
            return "MF"
        case .Madagascar:
            return "MG"
        case .Mali:
            return "ML"
        case .Martinique:
            return "MQ"
        case .Mauritania:
            return "MR"
        case .Mauritius:
            return "MU"
        case .NewCaledonia:
            return "NC"
        case .Niger:
            return "NE"
        case .FrenchPolynesia:
            return "PF"
        case .StPierreMiquelon:
            return "PM"
        case .Réunion:
            return "RE"
        case .Rwanda:
            return "RW"
        case .Seychelles:
            return "SC"
        case .Senegal:
            return "SN"
        case .Syria:
            return "SY"
        case .Chad:
            return "TD"
        case .Togo:
            return "TG"
        case .Tunisia:
            return "TN"
        case .Vanuatu:
            return "VU"
        case .WallisFutuna:
            return "WF"
        case .Mayotte:
            return "YT"
        }
    }
}

/**
 An enum of countries which speak Fulah.
*/
public enum FulahSpeakingCountry: CountryType {

    /// Cameroon is a country which speaks Fulah.
    case Cameroon
    /// Guinea is a country which speaks Fulah.
    case Guinea
    /// Mauritania is a country which speaks Fulah.
    case Mauritania
    /// Senegal is a country which speaks Fulah.
    case Senegal

    /// - returns: an Array of all the countries which speak Fulah
    public static let all: [FulahSpeakingCountry] = [ .Cameroon, .Guinea, .Mauritania, .Senegal ]

    /// - returns: the country identifier of a specific Fulah speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Cameroon:
            return "CM"
        case .Guinea:
            return "GN"
        case .Mauritania:
            return "MR"
        case .Senegal:
            return "SN"
        }
    }
}

/**
 An enum of countries which speak German.
*/
public enum GermanSpeakingCountry: CountryType {

    /// Austria is a country which speaks German.
    case Austria
    /// Belgium is a country which speaks German.
    case Belgium
    /// Switzerland is a country which speaks German.
    case Switzerland
    /// Germany is a country which speaks German.
    case Germany
    /// Liechtenstein is a country which speaks German.
    case Liechtenstein
    /// Luxembourg is a country which speaks German.
    case Luxembourg

    /// - returns: an Array of all the countries which speak German
    public static let all: [GermanSpeakingCountry] = [ .Austria, .Belgium, .Switzerland, .Germany, .Liechtenstein, .Luxembourg ]

    /// - returns: the country identifier of a specific German speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Austria:
            return "AT"
        case .Belgium:
            return "BE"
        case .Switzerland:
            return "CH"
        case .Germany:
            return "DE"
        case .Liechtenstein:
            return "LI"
        case .Luxembourg:
            return "LU"
        }
    }
}

/**
 An enum of countries which speak Greek.
*/
public enum GreekSpeakingCountry: CountryType {

    /// Cyprus is a country which speaks Greek.
    case Cyprus
    /// Greece is a country which speaks Greek.
    case Greece

    /// - returns: an Array of all the countries which speak Greek
    public static let all: [GreekSpeakingCountry] = [ .Cyprus, .Greece ]

    /// - returns: the country identifier of a specific Greek speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Cyprus:
            return "CY"
        case .Greece:
            return "GR"
        }
    }
}

/**
 An enum of countries which speak Hausa.
*/
public enum HausaSpeakingCountry: CountryType {

    /// Ghana is a country which speaks Hausa.
    case Ghana
    /// Niger is a country which speaks Hausa.
    case Niger
    /// Nigeria is a country which speaks Hausa.
    case Nigeria

    /// - returns: an Array of all the countries which speak Hausa
    public static let all: [HausaSpeakingCountry] = [ .Ghana, .Niger, .Nigeria ]

    /// - returns: the country identifier of a specific Hausa speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Ghana:
            return "GH"
        case .Niger:
            return "NE"
        case .Nigeria:
            return "NG"
        }
    }
}

/**
 An enum of countries which speak Italian.
*/
public enum ItalianSpeakingCountry: CountryType {

    /// Switzerland is a country which speaks Italian.
    case Switzerland
    /// Italy is a country which speaks Italian.
    case Italy
    /// San Marino is a country which speaks Italian.
    case SanMarino

    /// - returns: an Array of all the countries which speak Italian
    public static let all: [ItalianSpeakingCountry] = [ .Switzerland, .Italy, .SanMarino ]

    /// - returns: the country identifier of a specific Italian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Switzerland:
            return "CH"
        case .Italy:
            return "IT"
        case .SanMarino:
            return "SM"
        }
    }
}

/**
 An enum of countries which speak Korean.
*/
public enum KoreanSpeakingCountry: CountryType {

    /// North Korea is a country which speaks Korean.
    case NorthKorea
    /// South Korea is a country which speaks Korean.
    case SouthKorea

    /// - returns: an Array of all the countries which speak Korean
    public static let all: [KoreanSpeakingCountry] = [ .NorthKorea, .SouthKorea ]

    /// - returns: the country identifier of a specific Korean speaking country.
    public var countryIdentifier: String {
        switch self {
        case .NorthKorea:
            return "KP"
        case .SouthKorea:
            return "KR"
        }
    }
}

/**
 An enum of countries which speak Lingala.
*/
public enum LingalaSpeakingCountry: CountryType {

    /// Angola is a country which speaks Lingala.
    case Angola
    /// Congo - Kinshasa is a country which speaks Lingala.
    case CongoKinshasa
    /// Central African Republic is a country which speaks Lingala.
    case CentralAfricanRepublic
    /// Congo - Brazzaville is a country which speaks Lingala.
    case CongoBrazzaville

    /// - returns: an Array of all the countries which speak Lingala
    public static let all: [LingalaSpeakingCountry] = [ .Angola, .CongoKinshasa, .CentralAfricanRepublic, .CongoBrazzaville ]

    /// - returns: the country identifier of a specific Lingala speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Angola:
            return "AO"
        case .CongoKinshasa:
            return "CD"
        case .CentralAfricanRepublic:
            return "CF"
        case .CongoBrazzaville:
            return "CG"
        }
    }
}

/**
 An enum of countries which speak Malay.
*/
public enum MalaySpeakingCountry: CountryType {

    /// Brunei is a country which speaks Malay.
    case Brunei
    /// Malaysia is a country which speaks Malay.
    case Malaysia
    /// Singapore is a country which speaks Malay.
    case Singapore

    /// - returns: an Array of all the countries which speak Malay
    public static let all: [MalaySpeakingCountry] = [ .Brunei, .Malaysia, .Singapore ]

    /// - returns: the country identifier of a specific Malay speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Brunei:
            return "BN"
        case .Malaysia:
            return "MY"
        case .Singapore:
            return "SG"
        }
    }
}

/**
 An enum of countries which speak Masai.
*/
public enum MasaiSpeakingCountry: CountryType {

    /// Kenya is a country which speaks Masai.
    case Kenya
    /// Tanzania is a country which speaks Masai.
    case Tanzania

    /// - returns: an Array of all the countries which speak Masai
    public static let all: [MasaiSpeakingCountry] = [ .Kenya, .Tanzania ]

    /// - returns: the country identifier of a specific Masai speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Kenya:
            return "KE"
        case .Tanzania:
            return "TZ"
        }
    }
}

/**
 An enum of countries which speak Nepali.
*/
public enum NepaliSpeakingCountry: CountryType {

    /// India is a country which speaks Nepali.
    case India
    /// Nepal is a country which speaks Nepali.
    case Nepal

    /// - returns: an Array of all the countries which speak Nepali
    public static let all: [NepaliSpeakingCountry] = [ .India, .Nepal ]

    /// - returns: the country identifier of a specific Nepali speaking country.
    public var countryIdentifier: String {
        switch self {
        case .India:
            return "IN"
        case .Nepal:
            return "NP"
        }
    }
}

/**
 An enum of countries which speak Northern Luri.
*/
public enum NorthernLuriSpeakingCountry: CountryType {

    /// Iraq is a country which speaks Northern Luri.
    case Iraq
    /// Iran is a country which speaks Northern Luri.
    case Iran

    /// - returns: an Array of all the countries which speak Northern Luri
    public static let all: [NorthernLuriSpeakingCountry] = [ .Iraq, .Iran ]

    /// - returns: the country identifier of a specific Northern Luri speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Iraq:
            return "IQ"
        case .Iran:
            return "IR"
        }
    }
}

/**
 An enum of countries which speak Northern Sami.
*/
public enum NorthernSamiSpeakingCountry: CountryType {

    /// Finland is a country which speaks Northern Sami.
    case Finland
    /// Norway is a country which speaks Northern Sami.
    case Norway
    /// Sweden is a country which speaks Northern Sami.
    case Sweden

    /// - returns: an Array of all the countries which speak Northern Sami
    public static let all: [NorthernSamiSpeakingCountry] = [ .Finland, .Norway, .Sweden ]

    /// - returns: the country identifier of a specific Northern Sami speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Finland:
            return "FI"
        case .Norway:
            return "NO"
        case .Sweden:
            return "SE"
        }
    }
}

/**
 An enum of countries which speak Norwegian Bokmål.
*/
public enum NorwegianBokmålSpeakingCountry: CountryType {

    /// Norway is a country which speaks Norwegian Bokmål.
    case Norway
    /// Svalbard & Jan Mayen is a country which speaks Norwegian Bokmål.
    case SvalbardJanMayen

    /// - returns: an Array of all the countries which speak Norwegian Bokmål
    public static let all: [NorwegianBokmålSpeakingCountry] = [ .Norway, .SvalbardJanMayen ]

    /// - returns: the country identifier of a specific Norwegian Bokmål speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Norway:
            return "NO"
        case .SvalbardJanMayen:
            return "SJ"
        }
    }
}

/**
 An enum of countries which speak Oromo.
*/
public enum OromoSpeakingCountry: CountryType {

    /// Ethiopia is a country which speaks Oromo.
    case Ethiopia
    /// Kenya is a country which speaks Oromo.
    case Kenya

    /// - returns: an Array of all the countries which speak Oromo
    public static let all: [OromoSpeakingCountry] = [ .Ethiopia, .Kenya ]

    /// - returns: the country identifier of a specific Oromo speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Ethiopia:
            return "ET"
        case .Kenya:
            return "KE"
        }
    }
}

/**
 An enum of countries which speak Ossetic.
*/
public enum OsseticSpeakingCountry: CountryType {

    /// Georgia is a country which speaks Ossetic.
    case Georgia
    /// Russia is a country which speaks Ossetic.
    case Russia

    /// - returns: an Array of all the countries which speak Ossetic
    public static let all: [OsseticSpeakingCountry] = [ .Georgia, .Russia ]

    /// - returns: the country identifier of a specific Ossetic speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Georgia:
            return "GE"
        case .Russia:
            return "RU"
        }
    }
}

/**
 An enum of countries which speak Persian.
*/
public enum PersianSpeakingCountry: CountryType {

    /// Afghanistan is a country which speaks Persian.
    case Afghanistan
    /// Iran is a country which speaks Persian.
    case Iran

    /// - returns: an Array of all the countries which speak Persian
    public static let all: [PersianSpeakingCountry] = [ .Afghanistan, .Iran ]

    /// - returns: the country identifier of a specific Persian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Afghanistan:
            return "AF"
        case .Iran:
            return "IR"
        }
    }
}

/**
 An enum of countries which speak Portuguese.
*/
public enum PortugueseSpeakingCountry: CountryType {

    /// Angola is a country which speaks Portuguese.
    case Angola
    /// Brazil is a country which speaks Portuguese.
    case Brazil
    /// Cape Verde is a country which speaks Portuguese.
    case CapeVerde
    /// Guinea-Bissau is a country which speaks Portuguese.
    case GuineaBissau
    /// Macau (China) is a country which speaks Portuguese.
    case MacauChina
    /// Mozambique is a country which speaks Portuguese.
    case Mozambique
    /// Portugal is a country which speaks Portuguese.
    case Portugal
    /// São Tomé & Príncipe is a country which speaks Portuguese.
    case SãoToméPríncipe
    /// Timor-Leste is a country which speaks Portuguese.
    case TimorLeste

    /// - returns: an Array of all the countries which speak Portuguese
    public static let all: [PortugueseSpeakingCountry] = [ .Angola, .Brazil, .CapeVerde, .GuineaBissau, .MacauChina, .Mozambique, .Portugal, .SãoToméPríncipe, .TimorLeste ]

    /// - returns: the country identifier of a specific Portuguese speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Angola:
            return "AO"
        case .Brazil:
            return "BR"
        case .CapeVerde:
            return "CV"
        case .GuineaBissau:
            return "GW"
        case .MacauChina:
            return "MO"
        case .Mozambique:
            return "MZ"
        case .Portugal:
            return "PT"
        case .SãoToméPríncipe:
            return "ST"
        case .TimorLeste:
            return "TL"
        }
    }
}

/**
 An enum of countries which speak Punjabi.
*/
public enum PunjabiSpeakingCountry: CountryType {

    /// India is a country which speaks Punjabi.
    case India
    /// Pakistan is a country which speaks Punjabi.
    case Pakistan

    /// - returns: an Array of all the countries which speak Punjabi
    public static let all: [PunjabiSpeakingCountry] = [ .India, .Pakistan ]

    /// - returns: the country identifier of a specific Punjabi speaking country.
    public var countryIdentifier: String {
        switch self {
        case .India:
            return "IN"
        case .Pakistan:
            return "PK"
        }
    }
}

/**
 An enum of countries which speak Quechua.
*/
public enum QuechuaSpeakingCountry: CountryType {

    /// Bolivia is a country which speaks Quechua.
    case Bolivia
    /// Ecuador is a country which speaks Quechua.
    case Ecuador
    /// Peru is a country which speaks Quechua.
    case Peru

    /// - returns: an Array of all the countries which speak Quechua
    public static let all: [QuechuaSpeakingCountry] = [ .Bolivia, .Ecuador, .Peru ]

    /// - returns: the country identifier of a specific Quechua speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Bolivia:
            return "BO"
        case .Ecuador:
            return "EC"
        case .Peru:
            return "PE"
        }
    }
}

/**
 An enum of countries which speak Romanian.
*/
public enum RomanianSpeakingCountry: CountryType {

    /// Moldova is a country which speaks Romanian.
    case Moldova
    /// Romania is a country which speaks Romanian.
    case Romania

    /// - returns: an Array of all the countries which speak Romanian
    public static let all: [RomanianSpeakingCountry] = [ .Moldova, .Romania ]

    /// - returns: the country identifier of a specific Romanian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Moldova:
            return "MD"
        case .Romania:
            return "RO"
        }
    }
}

/**
 An enum of countries which speak Russian.
*/
public enum RussianSpeakingCountry: CountryType {

    /// Belarus is a country which speaks Russian.
    case Belarus
    /// Kyrgyzstan is a country which speaks Russian.
    case Kyrgyzstan
    /// Kazakhstan is a country which speaks Russian.
    case Kazakhstan
    /// Moldova is a country which speaks Russian.
    case Moldova
    /// Russia is a country which speaks Russian.
    case Russia
    /// Ukraine is a country which speaks Russian.
    case Ukraine

    /// - returns: an Array of all the countries which speak Russian
    public static let all: [RussianSpeakingCountry] = [ .Belarus, .Kyrgyzstan, .Kazakhstan, .Moldova, .Russia, .Ukraine ]

    /// - returns: the country identifier of a specific Russian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Belarus:
            return "BY"
        case .Kyrgyzstan:
            return "KG"
        case .Kazakhstan:
            return "KZ"
        case .Moldova:
            return "MD"
        case .Russia:
            return "RU"
        case .Ukraine:
            return "UA"
        }
    }
}

/**
 An enum of countries which speak Serbian.
*/
public enum SerbianSpeakingCountry: CountryType {

    /// Bosnia & Herzegovina is a country which speaks Serbian.
    case BosniaHerzegovina
    /// Montenegro is a country which speaks Serbian.
    case Montenegro
    /// Serbia is a country which speaks Serbian.
    case Serbia
    /// Kosovo is a country which speaks Serbian.
    case Kosovo

    /// - returns: an Array of all the countries which speak Serbian
    public static let all: [SerbianSpeakingCountry] = [ .BosniaHerzegovina, .Montenegro, .Serbia, .Kosovo ]

    /// - returns: the country identifier of a specific Serbian speaking country.
    public var countryIdentifier: String {
        switch self {
        case .BosniaHerzegovina:
            return "BA"
        case .Montenegro:
            return "ME"
        case .Serbia:
            return "RS"
        case .Kosovo:
            return "XK"
        }
    }
}

/**
 An enum of countries which speak Somali.
*/
public enum SomaliSpeakingCountry: CountryType {

    /// Djibouti is a country which speaks Somali.
    case Djibouti
    /// Ethiopia is a country which speaks Somali.
    case Ethiopia
    /// Kenya is a country which speaks Somali.
    case Kenya
    /// Somalia is a country which speaks Somali.
    case Somalia

    /// - returns: an Array of all the countries which speak Somali
    public static let all: [SomaliSpeakingCountry] = [ .Djibouti, .Ethiopia, .Kenya, .Somalia ]

    /// - returns: the country identifier of a specific Somali speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Djibouti:
            return "DJ"
        case .Ethiopia:
            return "ET"
        case .Kenya:
            return "KE"
        case .Somalia:
            return "SO"
        }
    }
}

/**
 An enum of countries which speak Spanish.
*/
public enum SpanishSpeakingCountry: CountryType {

    /// Latin America is a country which speaks Spanish.
    case LatinAmerica
    /// Argentina is a country which speaks Spanish.
    case Argentina
    /// Bolivia is a country which speaks Spanish.
    case Bolivia
    /// Chile is a country which speaks Spanish.
    case Chile
    /// Colombia is a country which speaks Spanish.
    case Colombia
    /// Costa Rica is a country which speaks Spanish.
    case CostaRica
    /// Cuba is a country which speaks Spanish.
    case Cuba
    /// Dominican Republic is a country which speaks Spanish.
    case DominicanRepublic
    /// Ceuta & Melilla is a country which speaks Spanish.
    case CeutaMelilla
    /// Ecuador is a country which speaks Spanish.
    case Ecuador
    /// Spain is a country which speaks Spanish.
    case Spain
    /// Equatorial Guinea is a country which speaks Spanish.
    case EquatorialGuinea
    /// Guatemala is a country which speaks Spanish.
    case Guatemala
    /// Honduras is a country which speaks Spanish.
    case Honduras
    /// Canary Islands is a country which speaks Spanish.
    case CanaryIslands
    /// Mexico is a country which speaks Spanish.
    case Mexico
    /// Nicaragua is a country which speaks Spanish.
    case Nicaragua
    /// Panama is a country which speaks Spanish.
    case Panama
    /// Peru is a country which speaks Spanish.
    case Peru
    /// Philippines is a country which speaks Spanish.
    case Philippines
    /// Puerto Rico is a country which speaks Spanish.
    case PuertoRico
    /// Paraguay is a country which speaks Spanish.
    case Paraguay
    /// El Salvador is a country which speaks Spanish.
    case ElSalvador
    /// United States is a country which speaks Spanish.
    case UnitedStates
    /// Uruguay is a country which speaks Spanish.
    case Uruguay
    /// Venezuela is a country which speaks Spanish.
    case Venezuela

    /// - returns: an Array of all the countries which speak Spanish
    public static let all: [SpanishSpeakingCountry] = [ .LatinAmerica, .Argentina, .Bolivia, .Chile, .Colombia, .CostaRica, .Cuba, .DominicanRepublic, .CeutaMelilla, .Ecuador, .Spain, .EquatorialGuinea, .Guatemala, .Honduras, .CanaryIslands, .Mexico, .Nicaragua, .Panama, .Peru, .Philippines, .PuertoRico, .Paraguay, .ElSalvador, .UnitedStates, .Uruguay, .Venezuela ]

    /// - returns: the country identifier of a specific Spanish speaking country.
    public var countryIdentifier: String {
        switch self {
        case .LatinAmerica:
            return "419"
        case .Argentina:
            return "AR"
        case .Bolivia:
            return "BO"
        case .Chile:
            return "CL"
        case .Colombia:
            return "CO"
        case .CostaRica:
            return "CR"
        case .Cuba:
            return "CU"
        case .DominicanRepublic:
            return "DO"
        case .CeutaMelilla:
            return "EA"
        case .Ecuador:
            return "EC"
        case .Spain:
            return "ES"
        case .EquatorialGuinea:
            return "GQ"
        case .Guatemala:
            return "GT"
        case .Honduras:
            return "HN"
        case .CanaryIslands:
            return "IC"
        case .Mexico:
            return "MX"
        case .Nicaragua:
            return "NI"
        case .Panama:
            return "PA"
        case .Peru:
            return "PE"
        case .Philippines:
            return "PH"
        case .PuertoRico:
            return "PR"
        case .Paraguay:
            return "PY"
        case .ElSalvador:
            return "SV"
        case .UnitedStates:
            return "US"
        case .Uruguay:
            return "UY"
        case .Venezuela:
            return "VE"
        }
    }
}

/**
 An enum of countries which speak Swahili.
*/
public enum SwahiliSpeakingCountry: CountryType {

    /// Congo - Kinshasa is a country which speaks Swahili.
    case CongoKinshasa
    /// Kenya is a country which speaks Swahili.
    case Kenya
    /// Tanzania is a country which speaks Swahili.
    case Tanzania
    /// Uganda is a country which speaks Swahili.
    case Uganda

    /// - returns: an Array of all the countries which speak Swahili
    public static let all: [SwahiliSpeakingCountry] = [ .CongoKinshasa, .Kenya, .Tanzania, .Uganda ]

    /// - returns: the country identifier of a specific Swahili speaking country.
    public var countryIdentifier: String {
        switch self {
        case .CongoKinshasa:
            return "CD"
        case .Kenya:
            return "KE"
        case .Tanzania:
            return "TZ"
        case .Uganda:
            return "UG"
        }
    }
}

/**
 An enum of countries which speak Swedish.
*/
public enum SwedishSpeakingCountry: CountryType {

    /// Åland Islands is a country which speaks Swedish.
    case ÅlandIslands
    /// Finland is a country which speaks Swedish.
    case Finland
    /// Sweden is a country which speaks Swedish.
    case Sweden

    /// - returns: an Array of all the countries which speak Swedish
    public static let all: [SwedishSpeakingCountry] = [ .ÅlandIslands, .Finland, .Sweden ]

    /// - returns: the country identifier of a specific Swedish speaking country.
    public var countryIdentifier: String {
        switch self {
        case .ÅlandIslands:
            return "AX"
        case .Finland:
            return "FI"
        case .Sweden:
            return "SE"
        }
    }
}

/**
 An enum of countries which speak Swiss German.
*/
public enum SwissGermanSpeakingCountry: CountryType {

    /// Switzerland is a country which speaks Swiss German.
    case Switzerland
    /// France is a country which speaks Swiss German.
    case France
    /// Liechtenstein is a country which speaks Swiss German.
    case Liechtenstein

    /// - returns: an Array of all the countries which speak Swiss German
    public static let all: [SwissGermanSpeakingCountry] = [ .Switzerland, .France, .Liechtenstein ]

    /// - returns: the country identifier of a specific Swiss German speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Switzerland:
            return "CH"
        case .France:
            return "FR"
        case .Liechtenstein:
            return "LI"
        }
    }
}

/**
 An enum of countries which speak Tamil.
*/
public enum TamilSpeakingCountry: CountryType {

    /// India is a country which speaks Tamil.
    case India
    /// Sri Lanka is a country which speaks Tamil.
    case SriLanka
    /// Malaysia is a country which speaks Tamil.
    case Malaysia
    /// Singapore is a country which speaks Tamil.
    case Singapore

    /// - returns: an Array of all the countries which speak Tamil
    public static let all: [TamilSpeakingCountry] = [ .India, .SriLanka, .Malaysia, .Singapore ]

    /// - returns: the country identifier of a specific Tamil speaking country.
    public var countryIdentifier: String {
        switch self {
        case .India:
            return "IN"
        case .SriLanka:
            return "LK"
        case .Malaysia:
            return "MY"
        case .Singapore:
            return "SG"
        }
    }
}

/**
 An enum of countries which speak Teso.
*/
public enum TesoSpeakingCountry: CountryType {

    /// Kenya is a country which speaks Teso.
    case Kenya
    /// Uganda is a country which speaks Teso.
    case Uganda

    /// - returns: an Array of all the countries which speak Teso
    public static let all: [TesoSpeakingCountry] = [ .Kenya, .Uganda ]

    /// - returns: the country identifier of a specific Teso speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Kenya:
            return "KE"
        case .Uganda:
            return "UG"
        }
    }
}

/**
 An enum of countries which speak Tibetan.
*/
public enum TibetanSpeakingCountry: CountryType {

    /// China is a country which speaks Tibetan.
    case China
    /// India is a country which speaks Tibetan.
    case India

    /// - returns: an Array of all the countries which speak Tibetan
    public static let all: [TibetanSpeakingCountry] = [ .China, .India ]

    /// - returns: the country identifier of a specific Tibetan speaking country.
    public var countryIdentifier: String {
        switch self {
        case .China:
            return "CN"
        case .India:
            return "IN"
        }
    }
}

/**
 An enum of countries which speak Tigrinya.
*/
public enum TigrinyaSpeakingCountry: CountryType {

    /// Eritrea is a country which speaks Tigrinya.
    case Eritrea
    /// Ethiopia is a country which speaks Tigrinya.
    case Ethiopia

    /// - returns: an Array of all the countries which speak Tigrinya
    public static let all: [TigrinyaSpeakingCountry] = [ .Eritrea, .Ethiopia ]

    /// - returns: the country identifier of a specific Tigrinya speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Eritrea:
            return "ER"
        case .Ethiopia:
            return "ET"
        }
    }
}

/**
 An enum of countries which speak Turkish.
*/
public enum TurkishSpeakingCountry: CountryType {

    /// Cyprus is a country which speaks Turkish.
    case Cyprus
    /// Turkey is a country which speaks Turkish.
    case Turkey

    /// - returns: an Array of all the countries which speak Turkish
    public static let all: [TurkishSpeakingCountry] = [ .Cyprus, .Turkey ]

    /// - returns: the country identifier of a specific Turkish speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Cyprus:
            return "CY"
        case .Turkey:
            return "TR"
        }
    }
}

/**
 An enum of countries which speak Urdu.
*/
public enum UrduSpeakingCountry: CountryType {

    /// India is a country which speaks Urdu.
    case India
    /// Pakistan is a country which speaks Urdu.
    case Pakistan

    /// - returns: an Array of all the countries which speak Urdu
    public static let all: [UrduSpeakingCountry] = [ .India, .Pakistan ]

    /// - returns: the country identifier of a specific Urdu speaking country.
    public var countryIdentifier: String {
        switch self {
        case .India:
            return "IN"
        case .Pakistan:
            return "PK"
        }
    }
}

/**
 An enum of countries which speak Uzbek.
*/
public enum UzbekSpeakingCountry: CountryType {

    /// Afghanistan is a country which speaks Uzbek.
    case Afghanistan
    /// Uzbekistan is a country which speaks Uzbek.
    case Uzbekistan

    /// - returns: an Array of all the countries which speak Uzbek
    public static let all: [UzbekSpeakingCountry] = [ .Afghanistan, .Uzbekistan ]

    /// - returns: the country identifier of a specific Uzbek speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Afghanistan:
            return "AF"
        case .Uzbekistan:
            return "UZ"
        }
    }
}

/**
 An enum of countries which speak Yoruba.
*/
public enum YorubaSpeakingCountry: CountryType {

    /// Benin is a country which speaks Yoruba.
    case Benin
    /// Nigeria is a country which speaks Yoruba.
    case Nigeria

    /// - returns: an Array of all the countries which speak Yoruba
    public static let all: [YorubaSpeakingCountry] = [ .Benin, .Nigeria ]

    /// - returns: the country identifier of a specific Yoruba speaking country.
    public var countryIdentifier: String {
        switch self {
        case .Benin:
            return "BJ"
        case .Nigeria:
            return "NG"
        }
    }
}

// MARK: - Locale

/**

Locale is an enum for type safe representation 
of locale identifiers. Its cases are languages 
in US English. For languages which are spoken 
in more than one country, an associated value 
of the country should be provided. For example 

```swift
let locale: MNYLocale = .French(.France)
```
*/
public enum MNYLocale {

    /**
     ### Afrikaans
    - requires: AfrikaansSpeakingCountry
    */
    case Afrikaans(AfrikaansSpeakingCountry)

    /// ### Aghem
    case Aghem

    /// ### Akan
    case Akan

    /**
     ### Albanian
    - requires: AlbanianSpeakingCountry
    */
    case Albanian(AlbanianSpeakingCountry)

    /// ### Amharic
    case Amharic

    /**
     ### Arabic
    - requires: ArabicSpeakingCountry
    */
    case Arabic(ArabicSpeakingCountry)

    /// ### Armenian
    case Armenian

    /// ### Assamese
    case Assamese

    /// ### Asturian
    case Asturian

    /// ### Asu
    case Asu

    /// ### Azerbaijani
    case Azerbaijani

    /// ### Bafia
    case Bafia

    /// ### Bambara
    case Bambara

    /// ### Basaa
    case Basaa

    /// ### Basque
    case Basque

    /// ### Belarusian
    case Belarusian

    /// ### Bemba
    case Bemba

    /// ### Bena
    case Bena

    /**
     ### Bengali
    - requires: BengaliSpeakingCountry
    */
    case Bengali(BengaliSpeakingCountry)

    /// ### Bodo
    case Bodo

    /// ### Bosnian
    case Bosnian

    /// ### Breton
    case Breton

    /// ### Bulgarian
    case Bulgarian

    /// ### Burmese
    case Burmese

    /// ### Cantonese
    case Cantonese

    /**
     ### Catalan
    - requires: CatalanSpeakingCountry
    */
    case Catalan(CatalanSpeakingCountry)

    /// ### Central Atlas Tamazight
    case CentralAtlasTamazight

    /**
     ### Central Kurdish
    - requires: CentralKurdishSpeakingCountry
    */
    case CentralKurdish(CentralKurdishSpeakingCountry)

    /// ### Chechen
    case Chechen

    /// ### Cherokee
    case Cherokee

    /// ### Chiga
    case Chiga

    /**
     ### Chinese
    - requires: ChineseSpeakingCountry
    */
    case Chinese(ChineseSpeakingCountry)

    /// ### Colognian
    case Colognian

    /// ### Cornish
    case Cornish

    /**
     ### Croatian
    - requires: CroatianSpeakingCountry
    */
    case Croatian(CroatianSpeakingCountry)

    /// ### Czech
    case Czech

    /**
     ### Danish
    - requires: DanishSpeakingCountry
    */
    case Danish(DanishSpeakingCountry)

    /// ### Duala
    case Duala

    /**
     ### Dutch
    - requires: DutchSpeakingCountry
    */
    case Dutch(DutchSpeakingCountry)

    /// ### Dzongkha
    case Dzongkha

    /// ### Embu
    case Embu

    /**
     ### English
    - requires: EnglishSpeakingCountry
    */
    case English(EnglishSpeakingCountry)

    /// ### Estonian
    case Estonian

    /**
     ### Ewe
    - requires: EweSpeakingCountry
    */
    case Ewe(EweSpeakingCountry)

    /// ### Ewondo
    case Ewondo

    /**
     ### Faroese
    - requires: FaroeseSpeakingCountry
    */
    case Faroese(FaroeseSpeakingCountry)

    /// ### Filipino
    case Filipino

    /// ### Finnish
    case Finnish

    /**
     ### French
    - requires: FrenchSpeakingCountry
    */
    case French(FrenchSpeakingCountry)

    /// ### Friulian
    case Friulian

    /**
     ### Fulah
    - requires: FulahSpeakingCountry
    */
    case Fulah(FulahSpeakingCountry)

    /// ### Galician
    case Galician

    /// ### Ganda
    case Ganda

    /// ### Georgian
    case Georgian

    /**
     ### German
    - requires: GermanSpeakingCountry
    */
    case German(GermanSpeakingCountry)

    /**
     ### Greek
    - requires: GreekSpeakingCountry
    */
    case Greek(GreekSpeakingCountry)

    /// ### Gujarati
    case Gujarati

    /// ### Gusii
    case Gusii

    /**
     ### Hausa
    - requires: HausaSpeakingCountry
    */
    case Hausa(HausaSpeakingCountry)

    /// ### Hawaiian
    case Hawaiian

    /// ### Hebrew
    case Hebrew

    /// ### Hindi
    case Hindi

    /// ### Hungarian
    case Hungarian

    /// ### Icelandic
    case Icelandic

    /// ### Igbo
    case Igbo

    /// ### Inari Sami
    case InariSami

    /// ### Indonesian
    case Indonesian

    /// ### Inuktitut
    case Inuktitut

    /// ### Irish
    case Irish

    /**
     ### Italian
    - requires: ItalianSpeakingCountry
    */
    case Italian(ItalianSpeakingCountry)

    /// ### Japanese
    case Japanese

    /// ### Jola-Fonyi
    case JolaFonyi

    /// ### Kabuverdianu
    case Kabuverdianu

    /// ### Kabyle
    case Kabyle

    /// ### Kako
    case Kako

    /// ### Kalaallisut
    case Kalaallisut

    /// ### Kalenjin
    case Kalenjin

    /// ### Kamba
    case Kamba

    /// ### Kannada
    case Kannada

    /// ### Kashmiri
    case Kashmiri

    /// ### Kazakh
    case Kazakh

    /// ### Khmer
    case Khmer

    /// ### Kikuyu
    case Kikuyu

    /// ### Kinyarwanda
    case Kinyarwanda

    /// ### Konkani
    case Konkani

    /**
     ### Korean
    - requires: KoreanSpeakingCountry
    */
    case Korean(KoreanSpeakingCountry)

    /// ### Koyra Chiini
    case KoyraChiini

    /// ### Koyraboro Senni
    case KoyraboroSenni

    /// ### Kwasio
    case Kwasio

    /// ### Kyrgyz
    case Kyrgyz

    /// ### Lakota
    case Lakota

    /// ### Langi
    case Langi

    /// ### Lao
    case Lao

    /// ### Latvian
    case Latvian

    /**
     ### Lingala
    - requires: LingalaSpeakingCountry
    */
    case Lingala(LingalaSpeakingCountry)

    /// ### Lithuanian
    case Lithuanian

    /// ### Lower Sorbian
    case LowerSorbian

    /// ### Luba-Katanga
    case LubaKatanga

    /// ### Luo
    case Luo

    /// ### Luxembourgish
    case Luxembourgish

    /// ### Luyia
    case Luyia

    /// ### Macedonian
    case Macedonian

    /// ### Machame
    case Machame

    /// ### Makhuwa-Meetto
    case MakhuwaMeetto

    /// ### Makonde
    case Makonde

    /// ### Malagasy
    case Malagasy

    /**
     ### Malay
    - requires: MalaySpeakingCountry
    */
    case Malay(MalaySpeakingCountry)

    /// ### Malayalam
    case Malayalam

    /// ### Maltese
    case Maltese

    /// ### Manx
    case Manx

    /// ### Marathi
    case Marathi

    /**
     ### Masai
    - requires: MasaiSpeakingCountry
    */
    case Masai(MasaiSpeakingCountry)

    /// ### Mazanderani
    case Mazanderani

    /// ### Meru
    case Meru

    /// ### Metaʼ
    case Meta

    /// ### Mongolian
    case Mongolian

    /// ### Morisyen
    case Morisyen

    /// ### Mundang
    case Mundang

    /// ### Nama
    case Nama

    /**
     ### Nepali
    - requires: NepaliSpeakingCountry
    */
    case Nepali(NepaliSpeakingCountry)

    /// ### Ngiemboon
    case Ngiemboon

    /// ### Ngomba
    case Ngomba

    /// ### North Ndebele
    case NorthNdebele

    /**
     ### Northern Luri
    - requires: NorthernLuriSpeakingCountry
    */
    case NorthernLuri(NorthernLuriSpeakingCountry)

    /**
     ### Northern Sami
    - requires: NorthernSamiSpeakingCountry
    */
    case NorthernSami(NorthernSamiSpeakingCountry)

    /**
     ### Norwegian Bokmål
    - requires: NorwegianBokmålSpeakingCountry
    */
    case NorwegianBokmål(NorwegianBokmålSpeakingCountry)

    /// ### Norwegian Nynorsk
    case NorwegianNynorsk

    /// ### Nuer
    case Nuer

    /// ### Nyankole
    case Nyankole

    /// ### Oriya
    case Oriya

    /**
     ### Oromo
    - requires: OromoSpeakingCountry
    */
    case Oromo(OromoSpeakingCountry)

    /**
     ### Ossetic
    - requires: OsseticSpeakingCountry
    */
    case Ossetic(OsseticSpeakingCountry)

    /// ### Pashto
    case Pashto

    /**
     ### Persian
    - requires: PersianSpeakingCountry
    */
    case Persian(PersianSpeakingCountry)

    /// ### Polish
    case Polish

    /**
     ### Portuguese
    - requires: PortugueseSpeakingCountry
    */
    case Portuguese(PortugueseSpeakingCountry)

    /**
     ### Punjabi
    - requires: PunjabiSpeakingCountry
    */
    case Punjabi(PunjabiSpeakingCountry)

    /**
     ### Quechua
    - requires: QuechuaSpeakingCountry
    */
    case Quechua(QuechuaSpeakingCountry)

    /**
     ### Romanian
    - requires: RomanianSpeakingCountry
    */
    case Romanian(RomanianSpeakingCountry)

    /// ### Romansh
    case Romansh

    /// ### Rombo
    case Rombo

    /// ### Rundi
    case Rundi

    /**
     ### Russian
    - requires: RussianSpeakingCountry
    */
    case Russian(RussianSpeakingCountry)

    /// ### Rwa
    case Rwa

    /// ### Sakha
    case Sakha

    /// ### Samburu
    case Samburu

    /// ### Sango
    case Sango

    /// ### Sangu
    case Sangu

    /// ### Scottish Gaelic
    case ScottishGaelic

    /// ### Sena
    case Sena

    /**
     ### Serbian
    - requires: SerbianSpeakingCountry
    */
    case Serbian(SerbianSpeakingCountry)

    /// ### Shambala
    case Shambala

    /// ### Shona
    case Shona

    /// ### Sichuan Yi
    case SichuanYi

    /// ### Sinhala
    case Sinhala

    /// ### Slovak
    case Slovak

    /// ### Slovenian
    case Slovenian

    /// ### Soga
    case Soga

    /**
     ### Somali
    - requires: SomaliSpeakingCountry
    */
    case Somali(SomaliSpeakingCountry)

    /**
     ### Spanish
    - requires: SpanishSpeakingCountry
    */
    case Spanish(SpanishSpeakingCountry)

    /// ### Standard Moroccan Tamazight
    case StandardMoroccanTamazight

    /**
     ### Swahili
    - requires: SwahiliSpeakingCountry
    */
    case Swahili(SwahiliSpeakingCountry)

    /**
     ### Swedish
    - requires: SwedishSpeakingCountry
    */
    case Swedish(SwedishSpeakingCountry)

    /**
     ### Swiss German
    - requires: SwissGermanSpeakingCountry
    */
    case SwissGerman(SwissGermanSpeakingCountry)

    /// ### Tachelhit
    case Tachelhit

    /// ### Taita
    case Taita

    /// ### Tajik
    case Tajik

    /**
     ### Tamil
    - requires: TamilSpeakingCountry
    */
    case Tamil(TamilSpeakingCountry)

    /// ### Tasawaq
    case Tasawaq

    /// ### Telugu
    case Telugu

    /**
     ### Teso
    - requires: TesoSpeakingCountry
    */
    case Teso(TesoSpeakingCountry)

    /// ### Thai
    case Thai

    /**
     ### Tibetan
    - requires: TibetanSpeakingCountry
    */
    case Tibetan(TibetanSpeakingCountry)

    /**
     ### Tigrinya
    - requires: TigrinyaSpeakingCountry
    */
    case Tigrinya(TigrinyaSpeakingCountry)

    /// ### Tongan
    case Tongan

    /**
     ### Turkish
    - requires: TurkishSpeakingCountry
    */
    case Turkish(TurkishSpeakingCountry)

    /// ### Turkmen
    case Turkmen

    /// ### Ukrainian
    case Ukrainian

    /// ### Upper Sorbian
    case UpperSorbian

    /**
     ### Urdu
    - requires: UrduSpeakingCountry
    */
    case Urdu(UrduSpeakingCountry)

    /// ### Uyghur
    case Uyghur

    /**
     ### Uzbek
    - requires: UzbekSpeakingCountry
    */
    case Uzbek(UzbekSpeakingCountry)

    /// ### Vai
    case Vai

    /// ### Vietnamese
    case Vietnamese

    /// ### Vunjo
    case Vunjo

    /// ### Walser
    case Walser

    /// ### Welsh
    case Welsh

    /// ### Western Frisian
    case WesternFrisian

    /// ### Yangben
    case Yangben

    /// ### Yiddish
    case Yiddish

    /**
     ### Yoruba
    - requires: YorubaSpeakingCountry
    */
    case Yoruba(YorubaSpeakingCountry)

    /// ### Zarma
    case Zarma

    /// ### Zulu
    case Zulu
}

/**
 Locale conforms to LanguageType.
*/
extension MNYLocale: LanguageType {

    /// - returns: the lanauge identifier as a String.
    public var languageIdentifier: String {
        switch self {
        case .Afrikaans(_):
            return "af"
        case .Aghem:
            return "agq"
        case .Akan:
            return "ak"
        case .Albanian(_):
            return "sq"
        case .Amharic:
            return "am"
        case .Arabic(_):
            return "ar"
        case .Armenian:
            return "hy"
        case .Assamese:
            return "as"
        case .Asturian:
            return "ast"
        case .Asu:
            return "asa"
        case .Azerbaijani:
            return "az"
        case .Bafia:
            return "ksf"
        case .Bambara:
            return "bm"
        case .Basaa:
            return "bas"
        case .Basque:
            return "eu"
        case .Belarusian:
            return "be"
        case .Bemba:
            return "bem"
        case .Bena:
            return "bez"
        case .Bengali(_):
            return "bn"
        case .Bodo:
            return "brx"
        case .Bosnian:
            return "bs"
        case .Breton:
            return "br"
        case .Bulgarian:
            return "bg"
        case .Burmese:
            return "my"
        case .Cantonese:
            return "yue"
        case .Catalan(_):
            return "ca"
        case .CentralAtlasTamazight:
            return "tzm"
        case .CentralKurdish(_):
            return "ckb"
        case .Chechen:
            return "ce"
        case .Cherokee:
            return "chr"
        case .Chiga:
            return "cgg"
        case .Chinese(_):
            return "zh"
        case .Colognian:
            return "ksh"
        case .Cornish:
            return "kw"
        case .Croatian(_):
            return "hr"
        case .Czech:
            return "cs"
        case .Danish(_):
            return "da"
        case .Duala:
            return "dua"
        case .Dutch(_):
            return "nl"
        case .Dzongkha:
            return "dz"
        case .Embu:
            return "ebu"
        case .English(_):
            return "en"
        case .Estonian:
            return "et"
        case .Ewe(_):
            return "ee"
        case .Ewondo:
            return "ewo"
        case .Faroese(_):
            return "fo"
        case .Filipino:
            return "fil"
        case .Finnish:
            return "fi"
        case .French(_):
            return "fr"
        case .Friulian:
            return "fur"
        case .Fulah(_):
            return "ff"
        case .Galician:
            return "gl"
        case .Ganda:
            return "lg"
        case .Georgian:
            return "ka"
        case .German(_):
            return "de"
        case .Greek(_):
            return "el"
        case .Gujarati:
            return "gu"
        case .Gusii:
            return "guz"
        case .Hausa(_):
            return "ha"
        case .Hawaiian:
            return "haw"
        case .Hebrew:
            return "he"
        case .Hindi:
            return "hi"
        case .Hungarian:
            return "hu"
        case .Icelandic:
            return "is"
        case .Igbo:
            return "ig"
        case .InariSami:
            return "smn"
        case .Indonesian:
            return "id"
        case .Inuktitut:
            return "iu"
        case .Irish:
            return "ga"
        case .Italian(_):
            return "it"
        case .Japanese:
            return "ja"
        case .JolaFonyi:
            return "dyo"
        case .Kabuverdianu:
            return "kea"
        case .Kabyle:
            return "kab"
        case .Kako:
            return "kkj"
        case .Kalaallisut:
            return "kl"
        case .Kalenjin:
            return "kln"
        case .Kamba:
            return "kam"
        case .Kannada:
            return "kn"
        case .Kashmiri:
            return "ks"
        case .Kazakh:
            return "kk"
        case .Khmer:
            return "km"
        case .Kikuyu:
            return "ki"
        case .Kinyarwanda:
            return "rw"
        case .Konkani:
            return "kok"
        case .Korean(_):
            return "ko"
        case .KoyraChiini:
            return "khq"
        case .KoyraboroSenni:
            return "ses"
        case .Kwasio:
            return "nmg"
        case .Kyrgyz:
            return "ky"
        case .Lakota:
            return "lkt"
        case .Langi:
            return "lag"
        case .Lao:
            return "lo"
        case .Latvian:
            return "lv"
        case .Lingala(_):
            return "ln"
        case .Lithuanian:
            return "lt"
        case .LowerSorbian:
            return "dsb"
        case .LubaKatanga:
            return "lu"
        case .Luo:
            return "luo"
        case .Luxembourgish:
            return "lb"
        case .Luyia:
            return "luy"
        case .Macedonian:
            return "mk"
        case .Machame:
            return "jmc"
        case .MakhuwaMeetto:
            return "mgh"
        case .Makonde:
            return "kde"
        case .Malagasy:
            return "mg"
        case .Malay(_):
            return "ms"
        case .Malayalam:
            return "ml"
        case .Maltese:
            return "mt"
        case .Manx:
            return "gv"
        case .Marathi:
            return "mr"
        case .Masai(_):
            return "mas"
        case .Mazanderani:
            return "mzn"
        case .Meru:
            return "mer"
        case .Meta:
            return "mgo"
        case .Mongolian:
            return "mn"
        case .Morisyen:
            return "mfe"
        case .Mundang:
            return "mua"
        case .Nama:
            return "naq"
        case .Nepali(_):
            return "ne"
        case .Ngiemboon:
            return "nnh"
        case .Ngomba:
            return "jgo"
        case .NorthNdebele:
            return "nd"
        case .NorthernLuri(_):
            return "lrc"
        case .NorthernSami(_):
            return "se"
        case .NorwegianBokmål(_):
            return "nb"
        case .NorwegianNynorsk:
            return "nn"
        case .Nuer:
            return "nus"
        case .Nyankole:
            return "nyn"
        case .Oriya:
            return "or"
        case .Oromo(_):
            return "om"
        case .Ossetic(_):
            return "os"
        case .Pashto:
            return "ps"
        case .Persian(_):
            return "fa"
        case .Polish:
            return "pl"
        case .Portuguese(_):
            return "pt"
        case .Punjabi(_):
            return "pa"
        case .Quechua(_):
            return "qu"
        case .Romanian(_):
            return "ro"
        case .Romansh:
            return "rm"
        case .Rombo:
            return "rof"
        case .Rundi:
            return "rn"
        case .Russian(_):
            return "ru"
        case .Rwa:
            return "rwk"
        case .Sakha:
            return "sah"
        case .Samburu:
            return "saq"
        case .Sango:
            return "sg"
        case .Sangu:
            return "sbp"
        case .ScottishGaelic:
            return "gd"
        case .Sena:
            return "seh"
        case .Serbian(_):
            return "sr"
        case .Shambala:
            return "ksb"
        case .Shona:
            return "sn"
        case .SichuanYi:
            return "ii"
        case .Sinhala:
            return "si"
        case .Slovak:
            return "sk"
        case .Slovenian:
            return "sl"
        case .Soga:
            return "xog"
        case .Somali(_):
            return "so"
        case .Spanish(_):
            return "es"
        case .StandardMoroccanTamazight:
            return "zgh"
        case .Swahili(_):
            return "sw"
        case .Swedish(_):
            return "sv"
        case .SwissGerman(_):
            return "gsw"
        case .Tachelhit:
            return "shi"
        case .Taita:
            return "dav"
        case .Tajik:
            return "tg"
        case .Tamil(_):
            return "ta"
        case .Tasawaq:
            return "twq"
        case .Telugu:
            return "te"
        case .Teso(_):
            return "teo"
        case .Thai:
            return "th"
        case .Tibetan(_):
            return "bo"
        case .Tigrinya(_):
            return "ti"
        case .Tongan:
            return "to"
        case .Turkish(_):
            return "tr"
        case .Turkmen:
            return "tk"
        case .Ukrainian:
            return "uk"
        case .UpperSorbian:
            return "hsb"
        case .Urdu(_):
            return "ur"
        case .Uyghur:
            return "ug"
        case .Uzbek(_):
            return "uz"
        case .Vai:
            return "vai"
        case .Vietnamese:
            return "vi"
        case .Vunjo:
            return "vun"
        case .Walser:
            return "wae"
        case .Welsh:
            return "cy"
        case .WesternFrisian:
            return "fy"
        case .Yangben:
            return "yav"
        case .Yiddish:
            return "yi"
        case .Yoruba(_):
            return "yo"
        case .Zarma:
            return "dje"
        case .Zulu:
            return "zu"
        }
    }
}

/**
 Locale conforms to CountryType.
*/
extension MNYLocale: CountryType {

    /// - returns: the country identifier as a String.
    public var countryIdentifier: String {
        switch self {
        case .Aghem, .Akan, .Amharic, .Armenian, .Assamese, .Asturian, .Asu, .Azerbaijani, .Bafia, .Bambara, .Basaa, .Basque, .Belarusian, .Bemba, .Bena, .Bodo, .Bosnian, .Breton, .Bulgarian, .Burmese, .Cantonese, .CentralAtlasTamazight, .Chechen, .Cherokee, .Chiga, .Colognian, .Cornish, .Czech, .Duala, .Dzongkha, .Embu, .Estonian, .Ewondo, .Filipino, .Finnish, .Friulian, .Galician, .Ganda, .Georgian, .Gujarati, .Gusii, .Hawaiian, .Hebrew, .Hindi, .Hungarian, .Icelandic, .Igbo, .InariSami, .Indonesian, .Inuktitut, .Irish, .Japanese, .JolaFonyi, .Kabuverdianu, .Kabyle, .Kako, .Kalaallisut, .Kalenjin, .Kamba, .Kannada, .Kashmiri, .Kazakh, .Khmer, .Kikuyu, .Kinyarwanda, .Konkani, .KoyraChiini, .KoyraboroSenni, .Kwasio, .Kyrgyz, .Lakota, .Langi, .Lao, .Latvian, .Lithuanian, .LowerSorbian, .LubaKatanga, .Luo, .Luxembourgish, .Luyia, .Macedonian, .Machame, .MakhuwaMeetto, .Makonde, .Malagasy, .Malayalam, .Maltese, .Manx, .Marathi, .Mazanderani, .Meru, .Meta, .Mongolian, .Morisyen, .Mundang, .Nama, .Ngiemboon, .Ngomba, .NorthNdebele, .NorwegianNynorsk, .Nuer, .Nyankole, .Oriya, .Pashto, .Polish, .Romansh, .Rombo, .Rundi, .Rwa, .Sakha, .Samburu, .Sango, .Sangu, .ScottishGaelic, .Sena, .Shambala, .Shona, .SichuanYi, .Sinhala, .Slovak, .Slovenian, .Soga, .StandardMoroccanTamazight, .Tachelhit, .Taita, .Tajik, .Tasawaq, .Telugu, .Thai, .Tongan, .Turkmen, .Ukrainian, .UpperSorbian, .Uyghur, .Vai, .Vietnamese, .Vunjo, .Walser, .Welsh, .WesternFrisian, .Yangben, .Yiddish, .Zarma, .Zulu:
            return ""
        case .Afrikaans(let country):
            return country.countryIdentifier
        case .Albanian(let country):
            return country.countryIdentifier
        case .Arabic(let country):
            return country.countryIdentifier
        case .Bengali(let country):
            return country.countryIdentifier
        case .Catalan(let country):
            return country.countryIdentifier
        case .CentralKurdish(let country):
            return country.countryIdentifier
        case .Chinese(let country):
            return country.countryIdentifier
        case .Croatian(let country):
            return country.countryIdentifier
        case .Danish(let country):
            return country.countryIdentifier
        case .Dutch(let country):
            return country.countryIdentifier
        case .English(let country):
            return country.countryIdentifier
        case .Ewe(let country):
            return country.countryIdentifier
        case .Faroese(let country):
            return country.countryIdentifier
        case .French(let country):
            return country.countryIdentifier
        case .Fulah(let country):
            return country.countryIdentifier
        case .German(let country):
            return country.countryIdentifier
        case .Greek(let country):
            return country.countryIdentifier
        case .Hausa(let country):
            return country.countryIdentifier
        case .Italian(let country):
            return country.countryIdentifier
        case .Korean(let country):
            return country.countryIdentifier
        case .Lingala(let country):
            return country.countryIdentifier
        case .Malay(let country):
            return country.countryIdentifier
        case .Masai(let country):
            return country.countryIdentifier
        case .Nepali(let country):
            return country.countryIdentifier
        case .NorthernLuri(let country):
            return country.countryIdentifier
        case .NorthernSami(let country):
            return country.countryIdentifier
        case .NorwegianBokmål(let country):
            return country.countryIdentifier
        case .Oromo(let country):
            return country.countryIdentifier
        case .Ossetic(let country):
            return country.countryIdentifier
        case .Persian(let country):
            return country.countryIdentifier
        case .Portuguese(let country):
            return country.countryIdentifier
        case .Punjabi(let country):
            return country.countryIdentifier
        case .Quechua(let country):
            return country.countryIdentifier
        case .Romanian(let country):
            return country.countryIdentifier
        case .Russian(let country):
            return country.countryIdentifier
        case .Serbian(let country):
            return country.countryIdentifier
        case .Somali(let country):
            return country.countryIdentifier
        case .Spanish(let country):
            return country.countryIdentifier
        case .Swahili(let country):
            return country.countryIdentifier
        case .Swedish(let country):
            return country.countryIdentifier
        case .SwissGerman(let country):
            return country.countryIdentifier
        case .Tamil(let country):
            return country.countryIdentifier
        case .Teso(let country):
            return country.countryIdentifier
        case .Tibetan(let country):
            return country.countryIdentifier
        case .Tigrinya(let country):
            return country.countryIdentifier
        case .Turkish(let country):
            return country.countryIdentifier
        case .Urdu(let country):
            return country.countryIdentifier
        case .Uzbek(let country):
            return country.countryIdentifier
        case .Yoruba(let country):
            return country.countryIdentifier
        }
    }
}

extension MNYLocale: LocaleType {
    // Uses default implementation
}
